题目一
描述:输入一串随机的数,用逗号隔开。如果有重复数字就输出最靠后的一个,没有重复的就输出-1。
如输入:1,2,3,4,4,3,2,1 输出:1
输入:1,2,3,4,5,6,7,8 输出:-1
#include<iostream>
#include<string>
#include<algorithm>
#define N 100
using namespace std;
//输入一串随机的数,用逗号隔开。如果有重复数字就输出最靠后的一个,没有重复的就输出-1。
int main()
{
string str;
cin>>str;
int len=str.length();
int temp=0,k=0,num[N],flag[N]={0},ans=0;
for(int i=0;i<len;i++)
{
if(str[i]>'0'&&str[i]<'9')
temp=temp*10+str[i]-'0';
else
{
num[k]=temp;
temp=0;
k++;
}
}
num[k]=temp;k++;
temp=0;
//for(int j=0;j<k;j++)
// cout<<num[j]<<endl;
for(int i=k-1;i>=0;i--)
{
for(int j=0;j<i;j++)
{
if(num[i]==num[j])
{
cout<<num[i]<<endl;
temp=1;
break;
}
}
if(temp==1)
break;
}
if(temp==0)
cout<<-1<<endl;
return 0;
}
题目二
描述:一次shift操作就是把一个单词的第一个挪到最后,单词有n位就最多挪n次,问可以和原单词相同几次。
如输入:byebye 输出:2
输入:abcd 输出:1
#include<iostream>
#include<string>
#include<algorithm>
#define MAX 1000000
using namespace std;
//第二个题是一次shift操作就是把一个单词的第一个挪到最后,单词有n位就最多挪n次,问可以和原单词相同几次。
int main()
{
string str;
cin>>str;
int len=str.length();
int ans=0;
for(int i=1;i<=len;i++)
{
int flag=0;
for(int j=0;j<len;j++)
{
if(str[j]!=str[(j+i)%len])
{
flag=1;
break;
}
}
if(flag==0)
ans++;
}
cout<<ans<<endl;
}
参考
https://blog.csdn.net/wen_zihan/article/details/101225538