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 }



posted @ 2011-10-24 06:15  Sw_R  阅读(122)  评论(0编辑  收藏  举报