1、最长的数字串(动态规划、保持最长的数字串在ret里面)
//最长的数字串
int main() {
string str,cur,max;
cin>>str;
for(int i=0;i<=str.length();i++){
if(str[i]>='0'&&str[i]<='9'){
cur+=str[i];
}else{
if(cur.size()<=max.size()){
cur.clear();
}else{
max=cur;
}
//cur.clear();
}
}
cout<<max<<endl;
return 0;
}
2、超过一半长度的数字(不同相消法)
//超过一半长度的数字
class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
if (numbers.empty())return 0;
int result = numbers[0];
int times = 1;
for (int i = 1; i < (numbers.size()); i++){
if (times != 0){
if (result == numbers[i]){
++times;
}
else{
--times;
}
}
else{
result = numbers[i];
times = 1;
}
}
int count = 0;
for (int i = 0; i<numbers.size(); i++){
if (result == numbers[i]){
++count;
}
}
if (count>numbers.size() / 2){
return result;
}
else{
return 0;
}
}
};
int main(){
vector<int> t = { 1, 2, 3, 6, 4, 2, 5, 4, 2, 2, 2, 2, 2, 5, 6, 5, 2, 2, 2, };
Solution s;
int re = s.MoreThanHalfNum_Solution(t);
cout << re << endl;
return 0;
}
3、计算糖果(注意判断是否存在)
//计算糖果
int main() {
int a, b, c, d;
while (cin >> a >> b >> c >> d) {
int A = (a + c) / 2;
int B1 = (d + b) / 2;
int B2 = (c - a) / 2;
int C = (d - b) / 2;
if (B1 != B2){
cout << "No" << endl;
}
else{
cout << A << " " << B1 << " " << C << endl;
}
}
return 0;
}
4、进制转换(转义表)
//进制转换
int main() {
string s, table = "0123456789ABCDEF";
int m, n;
while (cin >> m >> n) {
bool flag = false;
//防止m=0时,s内无数据,从而报错
//if (m == 0){
// cout << "0" << endl;
//}
if (m < 0){
m = -m;
flag = true;
}
while (m != 0){
s = s + table[m%n];//table映射关系10--->A
m /= n;
}
if (flag == true){
s += "-";
}
reverse(s.begin(), s.end()); //反转
cout << s << endl;
s.clear();
}
}