String 的一些
1. strstr() - retun pointer to the first occurence of substring in string.
char* strstr(char *str, char *substr) { int i = 0; int str_len = strlen(str); int sub_len = strlen(substr); while (i <= str_len - sub_len) { int j = 0; while (str[i] == substr[j] && j<sub_len) { i++; j++; } if (j == sub_len) return &str[i - sub_len]; i = i - j + 1; } return 0; }
2. Reverse a string. For ex: I love you -> you love I
void rs(char *str, int left, int right) { while(left < right) { swap(str[left], str[right]); left++; right--; } } void reverse_string(char *str) { int start = 0; int end = strlen(str)-1; rs(str, start, end); //reverse the whole string int left = 0, right = 0; while(right <= end) //reverse the each word. { while(isalnum(str[right])) { right++; } rs(str, left,right-1); //reverse a word left = right+1; right++; } }
3. longest substring without repeated char.
1 int len(string str)
2 {
3 int size = str.size();
4 int i = 0, j = 0;
5 int maxlen = 0;
6
7 bool arr[26] = {0};
8
9 while(j < size)
10 {
11 if(arr[str[i]])
12 {
13 maxlen = max(j-i, maxlen);
14 while(i != j)
15 {
16 arr[str[i]] = false;
17 i++;
18 }
19 i++;
20 j++;
21 }
22 else
23 {
24 arr[str[j]] = true;
25 j++;
26 }
27 }
28 maxlen = max(maxlen, size-i);
29 return maxlen;
30 }