1.判斷單詞大小寫是否正確:(腦子秀逗的一道題)
給定乙個單詞,你需要判斷單詞的大寫使用是否正確。
我們定義,在以下情況時,單詞的大寫用法是正確的:
全部字母都是大寫,比如"usa"。
單詞中所有字母都不是大寫,比如"leetcode"。
如果單詞不只含有乙個字母,只有首字母大寫, 比如 「google」。
否則,我們定義這個單詞沒有正確使用大寫字母。
看著挺簡單的一道題吧,然後我想到的是暴力求解-直接迴圈判斷即可,**啪寫了大半天還發現卡住了,嗚嗚嗚嗚嗚什麼鬼?然後我發現除了正則還有一種簡單的一行**就能解決的哈哈哈哈哈
class solution
}
嘿嘿嘿嘿嘿是不是就很簡單了,頭髮快掉沒了呀,演算法還是搞不懂哎
2.最長回文子串
解法一:暴力法:ac
class
solution
}return ans;
}public
boolean
ismax
(string test)
}return
true;}
}
解法2.中心擴散法:乙個中心向兩側擴充套件找到這個中心最長回文串的長度,這個中心可能是乙個字元(最長回文子串是奇數個),也可能是兩個字元(最長回文子串是偶數個):ac
class
solution
string res=s.
substring(0
,1);
int maxlen=1;
for(
int i=
0;ilength()
;i++)}
return res;
}public string ispalindrom
(string s,
int left,
int right)
else
}return s.
substring
(left+
1,right)
;//substring(beginindex,endindex)起始索引包括,結束索引不包括
}}
解法3:馬拉車演算法(manacher)理解即可
manacher 演算法本質上還是中心擴散法,只不過它使用了類似 kmp 演算法的技巧,充分挖掘了已經進行回文判定的子串的特點,在遍歷的過程中,記錄了已經遍歷過的子串的資訊,也是典型的以空間換時間思想的體現。
ababbbac-----
>#a#b#a#b#b#b#a#c#
3.給定乙個字串,編寫乙個函式判定其是否為某個回文串的排列之一。
回文串是指正反兩個方向都一樣的單詞或短語。排列是指字母的重新排列。
回文串不一定是字典當中的單詞。
ac思路:消消樂思想–new乙個hashset集合,遍歷字串,集合中有就刪除該元素,沒有就新增到集合中,判斷最後集合長度是否<=1,是則true,否則輸出false
噹噹噹噹~怎麼樣有沒有發現很nice
class
solution
else
}return set.
size()
<=1;
}}
4.面試題58 - ii. 左旋轉字串
字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串"abcdefg"和數字2,該函式將返回左旋轉兩位得到的結果"cdefgab"。
class
solution
else
}}
常見字串類
string 不可變字串,底層使用的是字元陣列儲存的字串 private final char value stringbuffer 可變字串,繼承自abstractorbuilder,可變長,底層也是字串陣列 private char value stringbuilder 可變字串,繼承自abs...
python常見字串方法
字串.isalnum 所有字元都是數字或者字母,為真返回 ture,否則返回 false。字串.isalpha 所有字元都是字母,為真返回 ture,否則返回 false。字串.isdigit 所有字元都是數字,為真返回 ture,否則返回 false。字串.islower 所有字元都是小寫,為真返...
常見字串函式實現
1,strlen 計數法 unsigned int my strlen1 const char str return count 遞迴法 unsigned int my strlen2 const char str 首尾相減法 unsigned int my strlen3 const char s...