2645、構(gòu)造有效字符串的最少插入數(shù)
給你一個(gè)字符串 word
,你可以向其中任何位置插入 "a"、"b" 或 "c" 任意次,返回使 word
有效 需要插入的最少字母數(shù)。
如果字符串可以由 "abc" 串聯(lián)多次得到,則認(rèn)為該字符串 有效 。
示例 1:
輸入:word = "b" 輸出:2 解釋:在 "b" 之前插入 "a" ,在 "b" 之后插入 "c" 可以得到有效字符串 "abc" 。
示例 2:
輸入:word = "aaa" 輸出:6 解釋:在每個(gè) "a" 之后依次插入 "b" 和 "c" 可以得到有效字符串 "abcabcabc" 。
示例 3:
輸入:word = "abc" 輸出:0 解釋:word 已經(jīng)是有效字符串,不需要進(jìn)行修改。
提示:
1 <= word.length <= 50
-
word
僅由字母 "a"、"b" 和 "c" 組成。
這道題目有點(diǎn)小技巧,主要是怎么說呢,他就三個(gè)字母,因此可以用一些規(guī)律來進(jìn)行計(jì)算,也就是可以把a(bǔ)bc記成012,因此可以得到如下規(guī)律,這里拿題解中的畫圖小匠來說,畫圖小匠yyds
class Solution {
public:
int addMinimum(string word) {
char last = 'c';
int addM = 0;
for(const auto& cur : word){
addM += (cur- last - 1 + 3) % 3;
last = cur;
}
return addM + ('a' - last - 1 + 3) % 3;
}
};
125、驗(yàn)證回文串
如果在將所有大寫字符轉(zhuǎn)換為小寫字符、并移除所有非字母數(shù)字字符之后,短語正著讀和反著讀都一樣。則可以認(rèn)為該短語是一個(gè) 回文串 。
字母和數(shù)字都屬于字母數(shù)字字符。
給你一個(gè)字符串 s
,如果它是 回文串 ,返回 true
;否則,返回 false
。
示例 1:
輸入: s = "A man, a plan, a canal: Panama" 輸出:true 解釋:"amanaplanacanalpanama" 是回文串。
示例 2:
輸入:s = "race a car" 輸出:false 解釋:"raceacar" 不是回文串。
示例 3:
輸入:s = " " 輸出:true 解釋:在移除非字母數(shù)字字符之后,s 是一個(gè)空字符串 "" 。 由于空字符串正著反著讀都一樣,所以是回文串。
提示:
1 <= s.length <= 2 * 105
-
s
僅由可打印的 ASCII 字符組成
392、判斷子序列
給定字符串 s 和 t ,判斷 s 是否為 t 的子序列。
字符串的一個(gè)子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩余字符相對位置形成的新字符串。(例如,"ace"
是"abcde"
的一個(gè)子序列,而"aec"
不是)。
進(jìn)階:
如果有大量輸入的 S,稱作 S1, S2, ... , Sk 其中 k >= 10億,你需要依次檢查它們是否為 T 的子序列。在這種情況下,你會(huì)怎樣改變代碼?
示例 1:
輸入:s = "abc", t = "ahbgdc" 輸出:true
示例 2:
輸入:s = "axc", t = "ahbgdc" 輸出:false
提示:
0 <= s.length <= 100
0 <= t.length <= 10^4
- 兩個(gè)字符串都只由小寫字符組成。
做幾道簡單題目練練手
class Solution {
public:
bool isSubsequence(string s, string t) {
int index1 = 0, index2 = 0;
for(int i = 0;i < t.length();++i){
if(s[index1] == t[index2]){
index1++;
index2++;
} else{
index2++;
}
}
return index1 == s.length();
}
};
228、匯總區(qū)間
給定一個(gè) ?無重復(fù)元素 的?有序 整數(shù)數(shù)組 nums
。
返回 恰好覆蓋數(shù)組中所有數(shù)字 的 最小有序 區(qū)間范圍列表?。也就是說,nums
的每個(gè)元素都恰好被某個(gè)區(qū)間范圍所覆蓋,并且不存在屬于某個(gè)范圍但不屬于 nums
的數(shù)字 x
。
列表中的每個(gè)區(qū)間范圍 [a,b]
應(yīng)該按如下格式輸出:
-
"a->b"
,如果a != b
-
"a"
,如果a == b
示例 1:
輸入:nums = [0,1,2,4,5,7] 輸出:["0->2","4->5","7"] 解釋:區(qū)間范圍是: [0,2] --> "0->2" [4,5] --> "4->5" [7,7] --> "7"
示例 2:文章來源:http://www.zghlxwxcb.cn/news/detail-806149.html
輸入:nums = [0,2,3,4,6,8,9] 輸出:["0","2->4","6","8->9"] 解釋:區(qū)間范圍是: [0,0] --> "0" [2,4] --> "2->4" [6,6] --> "6" [8,9] --> "8->9"
提示:文章來源地址http://www.zghlxwxcb.cn/news/detail-806149.html
0 <= nums.length <= 20
-231 <= nums[i] <= 231 - 1
-
nums
中的所有值都 互不相同 -
nums
按升序排列
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> ans;
int i = 0;
for (int j = 0; j < nums.size(); j++) {
if (j + 1 == nums.size() || nums[j] + 1 != nums[j + 1]) {
string str = "";
str += to_string(nums[i]);
if (i != j) {
str += "->"; str += to_string(nums[j]);
}
ans.push_back(str);
i = j + 1;
}
}
return ans;
}
};
到了這里,關(guān)于每日coding的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!