字串的擴充套件操作2:
(1)編寫乙個方法,將字串中的空格全部替換為"%20".不允許開闢額外的記憶體空間。
如:"mr john smith"替換為"mr%20john%20smith";
1)分析:
對字串(或陣列)的操作,通常從字串的尾部開始編輯,從後往前反向操作,不必擔心會覆蓋原來的資料。
如:memecpy的函式實現。
2)步驟:
1.先掃瞄乙個字串,計算出字串中的空格數;
2.反向編輯字串,將空格用%20替換。
3)**實現:
void replacespaces(char* str,int length)
newlength=length+spacecount*2;//空格為乙個字元,%20為3個字元。
str[newlength]='\0';//注意設定串的結束標識;
for(i=length-1;i>=0;i--)
else}}
-------
(2)基本的字串壓縮功能。如果壓縮後的字串沒有變短,則返回以前的字串,否則返回壓縮後的字串。
比如:字串"aabccccaaa"變成"a2b1c4a3";
1)方法一:
public string compressstr(string str)
else
}return mystr+pre+count;//注意最後一組重複字元還未放到壓縮字元中。
}缺點:字串的拼接部分的時間複雜度為o(n^2);
---2)優化:使用stringbuffer;
string compressstr(string str)else
}return mystr.tostring();
}/*計算壓縮後的字串的長度*/
int countcompression(string str)
else
}size=size+1+string.valueof(count).length();
return size;
}----
3)優化,不使用stringbuffer;
string compressstr(string str)
}index=setchar(array,pre,count,curindex);
return string.valueof(array);
}int setchar(char* array,char c ,int count,int index)
return index;
}----------
(3)若m*n矩陣中某個元素為0,則將其所在的行與列清零。
1)陷阱:
直接遍歷整個矩陣,如果遇到某個元素的值為0,則將其所在的行與列清零。陷阱是,在讀取被清零的行與列時,以及變成了0,所以最終整個矩陣都會變成0。
2)方法一:
建立乙個矩陣,第一次掃瞄標記0元素的位置,在第二次掃瞄時,將0元素所在的行與列清零。
空間複雜度為o(m*n)
3)方法二:
將元素值為0的行與列清零,值需要建兩個陣列,分別記錄下它的行號,與列號,即可。
時間複雜度為o(m+n);
實現:public void setzeros(int ** matrix)
}}//記錄值為0的元素所在的行與列。
for(int i=0;ifor(int j=0;jif(row[i] || column[j])
matrix[i][j]=0;}}
}-------
(4)給定兩個字串str1和str2,判斷str1是否由str2旋轉而來。
如:waterbottle是由erbottlewat旋轉而來。
1)分析:
str1如果是由str2旋轉而來,滿足2個條件;
1.str1與str2的長度相同。
2.str2是str1+str1子串。(+表示連線符)
2)**實現:
public boolean isrotation(string str1,string str2)
return false;
}---------------
字串擴充套件
真心的不應該!一天也沒做幾個題,自己太隨便,一些問題本身並不難,都是自己不按正常思路想。做題應該一步乙個腳印,明白自己下一步要幹嘛,不要憑空想象,然後再填補漏洞,智者會把錯誤扼殺在搖籃中!tom有些時候為了記錄的方便,常常將一些連續的字元用擴充套件符 簡單表示。比如abcdefg可以簡寫為a g,即...
字串擴充套件
problem description tom有些時候為了記錄的方便,常常將一些連續的字元用擴充套件符 簡單表示。比如abcdefg可以簡寫為a g,即用起始的字元和終止字元中間加上乙個擴充套件符 來表示這個字串。但是為了處理的方便,tom又必須將這些我們簡單記法擴充套件成原來的字串。很明顯要是人工...
字串擴充套件
字串擴充套件 time limit 1000ms memory limit 65536kb submit statistic discuss problem description tom有些時候為了記錄的方便,常常將一些連續的字元用擴充套件符 簡單表示。比如abcdefg可以簡寫為a g,即用起始...