字串基礎練習

2021-10-23 11:19:04 字數 3988 閱讀 8661

/*

* 判斷乙個字串是否有重複字元

* 思路:

* 如果考慮用的是ascii碼,每個字元的大小在0-127之間

* 可以建立乙個陣列,長度為128

* 遍歷字串中的每個字元,將陣列中索引為該字元的ascii碼的位置加1。

* 比如,如果字元是a,則將下標為97的位置加1,以標明字元出現的次數

* 如果陣列中有元素大於1,則字串有重複元素

*/public

class

repeatstring

public

static

boolean

isrepeatstring

(string str)

//定義乙個陣列,標明每個字元出現的次數

int[

] charnum =

newint

[128];

for(

int i =

0;ilength()

;i++

)else

}return

true;}

}

//翻轉字串

//翻轉字串

public

class

reversestring

//使用陣列

public

static string reversestring_1

(string str)

return

newstring

(reversestr);}

//使用stringbuilder

public

static string reversestring_2

(string str)

}

/*

* 給定兩個字串,確定其中乙個字串的字元重新排列後,能否變成另乙個字串,返回boolean

* 規定大小寫為不同字元且考慮字串中的空格

* 可見,如果是true,兩個字串的字元和個數是一樣的,只是順序不一樣

*/public

class

issamestring

/* * 方法一:

* 比對兩個字串的長度,不相等直接返回 false

* 將兩個字串轉為字元陣列,利用arrays類的sort方法進行排序

* 判斷排序後兩個陣列是否相同,返回true

* 因為有排序,時間複雜度比較大

*/public

static

boolean

issame_1

(string stra, string strb)

/* * 方式二:

* 建立乙個陣列,把字元的ascii碼(或unicode碼)作為陣列下標

* 遍歷第乙個字串,遍歷到每乙個字元後將陣列對應下標位置加1

* 遍歷第二個字串,每遍歷乙個字元,將陣列對應下標位置減1

* 遍歷整個陣列,若元素不全為0,返回false

*/public

static

boolean

issame_2

(string stra, string strb)

for(

int i =

0;ilength()

;i++

)for

(int i =

0;i)return

true;}

}

/*

* 編寫方法,實現基本的字串壓縮功能

* 比如,字串「abbeeddfffgggg」會壓縮成「a1b2e2d2f3g4」

* 若壓縮後的字串沒有變短,則返回原先的字串

*/public

class

zipstring

public

static string zipstr

(string str)

else

else

} last = ch;}if

(count >=1)

if(str.

length()

<= sb.

length()

)return str;

return sb.

tostring()

;}}

/*

* 判斷兩個字串的字符集是否相同

*/public

class

hassamechars

//方法一

public

static

boolean

hassame_1

(string stra, string strb)

for(

int i =

0;ilength()

;i++

)for

(int i =

0;ilength()

;i++

)return

true;}

//方法二

public

static

boolean

hassame_2

(string stra, string strb)

for(

int i =

0;ilength()

;i++)if

(mapa.

size()

!=mapb.

size()

)return

false;if

(!mapa.

keyset()

.equals

(mapb.

keyset()

))return

false

;return

true;}

}

/*

* 判斷字串a是否是字串b的旋轉字串

* stra:adefa strb:defaa --> true

* stra:adefa strb:efada --> false

* 如果strb是stra的旋轉字串,則strb+strb中一定包含stra

*/public

class

isrotate

public

static

boolean

isrotate

(string stra, string strb)

}

/*

* 將字串按單詞翻轉,如thank you,翻轉成you thank

* 先將全部字元翻轉,再將每個單詞翻轉

*/public

class

wordreverse

public

static string reverseword

(string str)

return sb.

deletecharat

(sb.

length()

-1).

tostring()

;}public

static string reversestring

(string str)

}

/*

* 移除字串中連續出現的k個0

*/public

class

removezero

public

static string removezero

(string str,

int k)

else

sb.(ch)

; count =0;

}}//如果字串末尾都是0

if(count!=0)

}return sb.

tostring()

;}}

基礎練習 字串對比

基礎練習 字串對比 時間限制 1.0s 記憶體限制 512.0mb 問題描述 給定兩個僅由大寫字母或小寫字母組成的字串 長度介於1到10之間 它們之間的關係是以下4中情況之一 1 兩個字串長度不等。比如 beijing 和 hebei 2 兩個字串不僅長度相等,而且相應位置上的字元完全一致 區分大小...

基礎練習 FJ的字串

題目鏈結藍橋杯 基礎練習 題解 問題描述 fj在沙盤上寫了這樣一些字串 a1 a a2 aba a3 abacaba a4 abacabadabacaba 你能找出其中的規律並寫所有的數列an嗎?輸入格式 僅有乙個數 n 26。輸出格式 請輸出相應的字串an,以乙個換行符結束。輸出中不得含有多餘的空...

基礎練習 FJ的字串

問題描述 fj在沙盤上寫了這樣一些字串 a1 a a2 aba a3 abacaba a4 abacabadabacaba 你能找出其中的規律並寫所有的數列an嗎?輸入格式 僅有乙個數 n 26。輸出格式 請輸出相應的字串an,以乙個換行符結束。輸出中不得含有多餘的空格或換行 回車符。樣例輸入 3樣...