387 - 383 - 344 - 279。
387. 字符串中的第一个唯一字符
// 18.10
// 18.15
class Solution {
public:
int firstUniqChar(string s) {
if(s.empty()) return -1;
vector<int> index(300, -1);
for(int i = 0; i < s.size(); i++) {
if(index[s[i]] == -1)
index[s[i]] = i;
else
index[s[i]] = -2;
}
for(int i = 0; i < s.size(); i++) {
if(index[s[i]] >= 0) return index[s[i]];
}
return -1;
}
};
383. 赎金信
// 18.18
// 18.21
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
if(ransomNote.empty()) return true;
unordered_map<char, int> m;
for(auto x : magazine) m[x]++;
for(auto x : ransomNote) {
auto it = m.find(x);
if(it == m.end() || it->second <= 0) return false;
else m[x]--;
}
return true;
}
};
344. 反转字符串
// 19.37
// 19.39
class Solution {
public:
void reverseString(vector<char>& s) {
for(int i = 0; i < s.size() / 2; i++) {
swap(s[i], s[s.size() - 1 - i]);
}
}
};
279. 完全平方数
// 19.40
// 19.57
class Solution {
public:
int numSquares(int n) {
if(n <= 0) return 0;
vector<int> cnt(n + 1, 10000);
cnt[0] = 0;
cnt[1] = 1;
for(int i = 2; i <= n; i++) {
for(int k = 1; k * k <= i; k++) {
cnt[i] = min(cnt[i], cnt[i - k * k] + 1);
}
}
return cnt.back();
}
};