Showing posts with label String. Show all posts
Showing posts with label String. Show all posts

Monday, July 28, 2014

[LeetCode] Longest Substring without repeat characters

Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.

Java Code


public int lengthOfLongestSubstring(String s) {
         int startIndex = 0;
           boolean[] visited = new boolean[256];
           int maxLen = 0;
           
           for(int i = 0; startIndex <= i && i < s.length(); i++){
               char a = s.charAt(i);
               if(!visited[a]) {
                   visited[a] = true;
               }else{
                   maxLen = maxLen > (i+1-startIndex)? maxLen : i + 1 - startIndex;
                   while(s.charAt(startIndex) != a ) {
                        visited[s.charAt(startIndex)] = false;
                       startIndex++;
                   }
                   
                   startIndex++;
               }
                   
           }
           
           maxLen = maxLen > s.length() - startIndex? maxLen : s.length() - startIndex;
           
           return maxLen;
    }

Thursday, September 27, 2012

[Leetcode] Implement strStr



Implement strStr().
Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack.

Thoughts:
1. The most straight thought is to iterate through the haystack.

2. 另外一个为kmp算法,讲解可以参考 topcoder

Java Code:
public String strStr(String haystack, String needle) {
         if(needle.length() == 0) return haystack;
         
         int n = 0;
         
         for(int i = 0; i <= haystack.length() - needle.length(); i++){
             n = 0;
             
             while(n < needle.length() && haystack.charAt(i+n) == needle.charAt(n))
                  n++;
                  
             if(n == needle.length()) return haystack.substring(i);
         }
         
         return null;
    }