求两个数的最大公约数(辗转相除法)
int gck(int a, int b) {
while (a % b > 0) {
int temp = a % b;
a = b;
b = temp;
}
return b;
}
求一个字符串的全排列(递归)
void perm(string str, int start) {
if (start == str.size() - 1) {
cout << str << endl;
return ;
} else {
for (int i = start; i < str.size(); i++) {
swap(str[i], str[start]);
perm(str, start + 1);
swap(str[i], str[start]);
}
}
}
求一个字符串的所有子串
void printAllSon(string str) {
for (int i = 0; i < str.size(); i++) {
for (int j = 0; j < str.size() - i; j++) {
string son = str.substr(i, j + 1);
cout << son << endl;
}
}
}
二分查找
//#include <vector>
int binSearchOf(vector<int> &arr, int val) {
int low = -1, high = arr.size(), mid;
bool isFind = false;
while (low <= high) {
mid = (high + low) / 2;
if (arr[mid] < val) {
low = mid + 1;
} else if (arr[mid] > val) {
high = mid - 1;
} else {
isFind = true;
break;
}
}
return isFind ? mid : -1;
}
判断闰年
bool isLeap(int year) {
bool isRight = true;
if (year % 4 != 0) {
isRight = false;
}
if (year % 100 == 0 && year % 400 != 0) {
isRight = false;
}
return isRight;
}
将字符串中包含的某个字符全部替换为新字符
void updateChTo(string &str, char oldCh, char newCh) {
int pos;
string goal(1, newCh);
pos = str.find(oldCh);
while (pos != str.npos) {
str.replace(pos, 1, goal);
pos = str.find(oldCh);
}
}
持续更新。