1093. 打印小写字母表
问题描述
把英文字母表的小写字母按顺序和倒序打印出来。(每行 13 个)
输入:
无
输出四行:
abcdefghijklm nopqrstuvwxyz zyxwvutsrqpon mlkjihgfedcba
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a;
for(int i='a';i<='z';i++)
{
printf("%c",i);
if(i=='m'||i=='z')
printf("\n");
}
for(int i='z';i>='a';i--)
{
printf("%c",i);
if(i=='n'||i=='a')
printf("\n");
}
return 0;
}
1101. 时间的差
问题描述
看到两个标准格式的时间,有小时,有分钟,有秒,格式如:ℎ:𝑚:𝑠h:m:s,即 时 : 分 : 秒。
你想知道,这两个时间之间相差多少吗?
输入
输入包括两行,两行均为一个“时 : 分 : 秒”格式的时间。
且本题保证第一个时间一定大于第二个时间!
输出
输出就是输入的两个时间之间的秒数差。
样例
输入
复制
01:10:10 00:30:30
输出
复制
2380
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b;
int c,d;
cin >> a >> b;
c = (a[0] * 10 + a[1]) * 3600 + (a[3] * 10 + a[4]) * 60 + a[6] * 10 + a[7];
d = (b[0] * 10 + b[1]) * 3600 + (b[3] * 10 + b[4]) * 60 + b[6] * 10 + b[7];
cout << c - d;
}
1134. 国王的魔镜(五种解法)
问题描述
国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。
比如一条项链,我们用 𝐴𝐵AB 来表示,不同的字母表示不同颜色的珍珠。如果把 𝐵B 端接触镜面的话,魔镜会把这条项链变为 𝐴𝐵𝐵𝐴ABBA 。如果再用一端接触的话,则会变成 𝐴𝐵𝐵𝐴𝐴𝐵𝐵𝐴ABBAABBA (假定国王只用项链的某一端接触魔镜)。
给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
输入
只有一个字符串(长度 ≤100≤100),由大写英文字母组成,表示最终的项链。
输出
只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。
样例
输入
复制
ABBAABBA
输出
复制
2
#1 解法
include<bits/stdc++.h>
using namespace std;
bool huiwen(char s[ ])
{
bool F;
int len=strlen(s);
F=true;
for(int i=0;i<len/2;i++)
{
if(s[i]!=s[len-i-1])
F=false;
}
return F;
}
int main() {
char s[110];
cin>>s;
while(strlen(s)%2==0&&huiwen(s)==1)
s[strlen(s)/2]='\0';
cout<<strlen(s);
return 0;
}
#2解法:桶思维
//#2- 利用桶思维
#include<bits/stdc++.h>
using namespace std;
int tong[91];
int main()
{
int cnt = 0;
string s;
cin >> s;
for(int i = 0; i < s.size(); i++)
{
tong[s[i]]++;
}
for(int i = 65; i <= 90; i++)
{
if(tong[i] > 0)
{
cnt++;
}
}
cout << cnt;
return 0;
}
#3解法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
cin>>a;
while(1)
{
if(a.size()%2!=0)
{
break;
}
string b=a;
reverse(b.begin(),b.end()); //reverse() 反转字符串函数
if(a!=b)
{
break;
}
a=a.substr(0,a.size()/2); //.substr(0,n) 获取从0到n的长度
}
cout<<a.size();
return 0;
}
#4解法:
#include <bits/stdc++.h>
using namespace std;
string fun1(string s);
string fun1(string s)
{
string b;
for (int i = s.size() - 1;i >= 0;i--)
{
b.push_back(s[i]);
}
return b;
}
int main()
{
string s;
getline(cin,s);
while (s == fun1(s))
{
s = s.erase(s.size() / 2,s.size() / 2);
}
cout << s.size();
}
#5解法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
string ts,ts1,ts2;
cin >> s;
int t = 0;
ts = s.substr(s.size() / 2,s.size() / 2);
for (int i = ts.size() - 1;i >= 0;i--)
{
ts1.push_back(ts[i]);
}
s = s.substr(0,s.size() / 2);
//cout << s << endl;
while (s == ts1)
{
t += 1;
ts = s.substr(s.size() / 2,s.size() / 2);
//cout << ts;
ts1.clear();
for (int i = ts.size() - 1;i >= 0;i--)
{
ts1.push_back(ts[i]);
}
ts2 = s;
s = s.substr(0,s.size() / 2);
}
//cout << ts2 << endl;
cout << ts2.size();
return 0;
}