关于在做LeetCode新手村383.赎金信时发现的for的另一种格式
基本格式
for ( ; ; ;)
直接引用原字符串进行遍历操作的
for (char & c : s)
逻辑上会再复制一个字符串再进行遍历操作的
for (char c : s)
官方代码中的
for (auto & c : magazine) {
cnt[c - 'a']++;
}
一种字符串遍历新的格式,直接引用原字符串进行遍历操作。
关于auto的原理是根据后面元素的值,来推测自己前面的类型是什么。
其中cnt是新建的动态大小数组的顺序容器名,cnt[c - 'a'] ++,用来统计字符个数。
题解
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
if (ransomNote.size()>magazine.size()) {
return false;
}
vector<int> cnt(26);
for (char c:magazine) {
cnt[c-'a']++;
}
for (char c:ransomNote) {
cnt[c-'a']--;
if (cnt[c-'a']<0) {
return false;
}
}
return true;
}
};