题目描述
整合两种算法的python3和c++版本
算法1
只出现一次即从正方向查找和反方向查找都只能指向同一个位置的数
C++ 代码
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
string a;
bool s = 0;
while (getline(cin,a)){
for (int i =0;i<a.size();i++){
if (a.find(a[i]) == a.rfind(a[i])){
s = 1;
cout <<a[i];
break;
}
}
if (s==0){
cout <<"no"<<endl;
}
}
return 0;
}
python3 代码
= input()
list = list(a)
n = len(list)
final = 0
for i in range(n):
m = list[i]
if a.find(m,0,n) == i and a.find(m,i+1,n) == -1:
print(list[i])
final = 1
break
if final == 0:
print("no")
算法2
y总上课讲的算法,开辟一个26个位置的字符串,每个位置代表一个字母
C++ 代码
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int c[26];
char str[100010];
int main()
{
cin >> str;
int m = strlen(str);
for (int i=0;i<m;i++) c[str[i] - 'a'] ++;
for (int i=0;i<m;i++){
if (c[str[i] - 'a'] == 1){
cout << str[i]<<endl;
return 0;
}
}
cout<<"no"<<endl;
return 0;
}
python 代码
str = [0]*26
l = input()
list = []
for i in l:
list.append(i)
m = len(l)
for i in range(m):
str[ord(list[i])-ord('a')] +=1
final = 0
for i in range(m):
if str[ord(list[i])-ord('a')] == 1:
print(list[i])
final = 1
break
if final == 0:
print("no")