蓝桥杯学习笔记01
c++数字转字符串
int num;
string s;
s = to_string(num);
c++字符串转数字
string s;
int num;
num = stoi(s);
解决各位数之和/之积的解决办法,变成字符串
class Solution {
public:
int subtractProductAndSum(int n) {
string s = to_string(n);
int result=1;
int result2=0;
for(int i=0;i<s.length();i++){
result *= s[i]-'0';
result2 += s[i]-'0';
}
return result-result2;
}
};
二维vector遍历,及其转置
# vector<vector<int>> transposed(col_len, vector<int>(row_len)); 的含义是:
#创建一个二维向量 transposed,其包含 col_len 个一维向量。
#每个一维向量的大小为 row_len。
矩阵转置的代码如下
class Solution {
public:
vector<vector<int>> transpose(vector<vector<int>>& matrix) {
int col_len, row_len;
col_len = matrix[0].size(); //列宽
row_len = matrix.size(); //行宽
// 初始化转置后的矩阵
vector<vector<int>> v1(col_len, vector<int>(row_len));
int i=0, j=0;
for(i=0;i<col_len;i++){
for(j=0;j<row_len;j++){
v1[i][j] = matrix[j][i];
}
}
return v1;
}
};
c++遍历字符串可以
string s;
for (char c : s)
c++查找某个字符是否属于字符数组中的某个。find,begin,end
class Solution {
public:
bool isVowel(char c) {
char vowels[] = {'a', 'e', 'i', 'o', 'u'};
return find(begin(vowels), end(vowels), c) != end(vowels);
}
int vowelStrings(vector<string>& words, int left, int right) {
int i = 0;
int cnt=0;
for(i = left;i<=right;i++){
string s = words[i];
if( isVowel(s[0]) && isVowel(s[s.length()-1])) cnt++;
}
return cnt;
}
};