字串的擴充套件操作22

2021-06-26 02:08:00 字數 2054 閱讀 7081

字串的擴充套件操作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,即用起始...