1. 程式人生 > >最長無重複字元子串

最長無重複字元子串

給定一個字串,求出其最長的無重複的字元子串的長度。

例:給定字串str = “abcdahisjgdb”,則其最長無重複子串為“bcdahisjg”,長度為9。

思路:我們遍歷字串,計算以每一個字元開頭的所有無重複子串的長度,最後比較這些長度,找出最大的一個。

在每一次的迴圈中,我們用雜湊表來統計有無重複的字元。

本題比較簡單,直接上程式碼。

code:

int longestSubStr(string str)
{
	int len = str.length();
	if(len == 0)
		return 0;
	//利用雜湊表來統計是否有重複
	int hashTable[256] = {0};
	int cnt;//統計每一次無重複字串的長度
	int max = 0;//最長的無重複
	
	for(int i = 0; i < len; ++i){
		cnt = 0;
		hashTable[str[i]]++;
		cnt++;
		for(int j = i+1; j < len; ++j){
			//先判斷是否已經存在 
			if(hashTable[str[j]])
				break;
			hashTable[str[j]]++;
			cnt++;
		}
		max = max >= cnt ? max : cnt;
		memset(hashTable, 0, sizeof(hashTable));
	}
	return max;
}


相關推薦

重複字元

給定一個字串,求出其最長的無重複的字元子串的長度。 例:給定字串str = “abcdahisjgdb”,則其最長無重複子串為“bcdahisjg”,長度為9。 思路:我們遍歷字串,計算以每一個字元

求字串的重複字元(C++)

題目:          給定一個字串str,返回str的最長無重複字元子串的長度。          如:"abcd" 返回4  "abcb" 返回3          要求:若字串的長度為N 演算

nowcoder 重複字元

題目 對於一個字串,請設計一個高效演算法,找到字串的最長無重複字元的子串長度。 給定一個字串A及它的長度n,請返回它的最長無重複字元子串長度。保證A中字元全部為小寫英文字元,且長度小於等於500。

leetcode-3:Longest Substring Without Repeating Characters 重複字元

題目: Given a string, find the length of the longest substring without repeating characters. Example 1: Input: "abcabcbb" Outpu

[LeetCode] Longest Substring Without Repeating Characters 重複字元

Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc", which the len

LeetCode3重複字元/C++--Set用法

初始化: map和set封裝了二叉樹等 成員函式方式提供的常用操作,如:插入、排序、刪除、查詢等。 set<int> s; set作為一個容器也是用來儲存同一資料型別的資料型別,並且能從一個數據集合中取出資料,在set中每個元素的值都唯一

Java實現-重複字元

public class Solution { /** * @param s: a string * @return: an integer */

[LeetCode] Longest substring without repeating characters 重復

log 技術 pan -i 一個 html https rep tor Given a string, find the length of the longest substring without repeating characters. For example, t

字符問題之 找到字符重復

給定 ack col 大小 ges logs pub 學會 main 給定一個字符串str, 返回str的最長無重復字符子串長度 例如 str="abcd‘ 返回4 str=“aabcb” 最長“abc” 返回3 解決本題的思路非常非常有趣,這種思路必須要學

算法 - 重復

bsp title ref new 重復 script while hashmap scrip 原題: https://leetcode.com/problems/longest-substring-without-repeating-characters/descript

[LEETCODE]#3 Longest Substring Without Repeating Characters 重複長度, Sliding Window, 滑動視窗

https://leetcode.com/problems/longest-substring-without-repeating-characters/   Given a string, find the length of the longest substring

尋找字串重複

例子:1、字串“abcabcbb”,最長子串是“abc”,長度是3;    2、字串“bbbb”,最長子串是“b”,長度是1;    3、字串“pwwkew”,最長子串是“wek”,長度是3; 程式是: var lengthOfLongest = function (s)

Java面試題演算法篇尋找字串中重複元素

package com.puhui.goosecard.web.utils; // Java program to find the maximum consecutive // repeating character in given string class GFG

【動態規劃】--重複

給定一個字串,找出不含有重複字元的最長子串的長度。 示例: 給定 "abcabcbb" ,沒有重複字元的最長子串是 "abc" ,那麼長度就是3。 給定 "bbbbb" ,最長的子串就是 "b" ,長度是1。 給定 "pwwkew" ,最長子串是 "wke" ,長度是3。請注

【死磕演算法·字串問題】重複問題

題目大意: 給定一個字串str,求該字串中的最長無重複子串的長度。 如“abcd”的最長無重複子串是“abcd”,長度為4;“abcb”的最長無重複子串是“abc”,長度為3。 題目思路: 遍歷字串,表示出以每個字串元素str[i]為結尾的最長無重複子串長度,遍歷完成後求最大值即可。

大子重複重複序列,公共公共序列解法及程式碼

1.值最大子串 比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,達到最大;而 {5,-6,4,2}的最大子序列是{4,2},它的和是6。 思路:看子串和是否大於0,大於0繼續加,小於0就從當前開始。 int maxSubSum(const vector<

重複----滑動視窗解法

class Solution { /* * 2018.01.16 * 解題方法:動態規劃,但是今天新學了一招:滑動視窗----有點猛 * 定義左右left、right指標,map陣列,然後遍歷判斷 */ publ

manacher算法處理的回文(二)

pub 中心 回文子串 max 最大 += public img cto 在上篇《manacher算法處理最長的回文子串(一)》解釋了manacher算法的原理,接著給該算法,該程序在leetcode的最長回文子串中通過。首先manacher算法維護3個變量。一

manacher算法處理的回文(一)

字母 .cn ddc 還要 自己 它的 nac 回文串 ima 引言 相信大家都玩過折疊紙張,如果把回文串相當於折疊一個A4紙,比如ABCDDCBA就是沿著中軸線(D與D之間)對折重合,那麽這個就是一個回文串。或者是ABCDEDCBA的中軸線就是E,那麽沿著中

找出字符中的的回文

size longest ges solution turn str b+ () ring 1 class Solution { 2 public: 3 string longestPalindrome(string s) { 4 int