题目一:
描述:输入一串随机的数,用逗号隔开。如果有重复数字就输出最靠后的一个,没有重复的就输出-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>
using namespace std;
//输入一串随机的数,用逗号隔开。如果有重复数字就输出最靠后的一个,没有重复的就输出-1。
int main()
{
int num[100]={0};
int flag[10000]={0};
int ans=-1;
string str;
int temp=0;
cin>>str;
int k=0;
int len=str.length();
for(int i=0;i<len;i++)
{
if(str[i]>='0'&&str[i]<='9')
temp=temp*10+str[i]-'0';
else if(str[i]==',')
{
num[k]=temp;
temp=0;
k++;
}
}
num[k]=temp; k++;
for(int i=0;i<k;i++)
{
temp=num[i];
if(flag[temp]==1)
ans=num[i];
flag[temp]=1;
}
cout<<ans<<endl;
}
题目二:
描述:一次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 ans=0;
int n=str.length();
for(int i=1;i<=n;i++)
{
int flag=0;
for(int j=0;j<n;j++)
{
if(str[j]!=str[(j+i)%n])
{
flag=1;
break;
}
}
if(flag==0)
ans++;
}
cout<<ans<<endl;
}