题目描述
给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。
给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。
测试样例:
"This is nowcoder","is This nowcoder"
返回:true
"Here you are","Are you here"
返回:false
python 代码
# -*- coding:utf-8 -*-
class Same:
def checkSam(self, stringA, stringB):
strA = sorted(stringA)
strB = sorted(stringB)
if strA == strB:
return True
else:
return False
c++代码
//有点无耻额,直接用的sort函数,虽然简洁,复杂度却是O(nlogn);
//正规的做法,应该是hash,用256的元素记录每个字符出现的次数
//再进行比较,扫描一遍,比较一遍,复杂度只要O(n).
class Same {
public:
bool checkSam(string stringA, string stringB) {
sort(stringA.begin(),stringA.end());
sort(stringB.begin(),stringB.end());
return stringA.compare(stringB)==0;
}
};
题目描述
请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
测试样例:
"This is nowcoder"
返回:"redocwon si sihT"c++代码
class Reverse {
public:
string reverseString(string iniString) {
// write code here
char temp;
int j = iniString.size()-1;
int i = 0;
while(i<j){
temp=iniString[i];
iniString[i]=iniString[j];
iniString[j]=temp;
i++;
j--;
}
return iniString;
}
};
python代码
# -*- coding:utf-8 -*-
class Reverse:
def reverseString(self, iniString):
# write code here
new_list=list(iniString)
new_list.reverse()
return ''.join(new_list)
题目描述
请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。
测试样例:
"aeiou"
返回:True
"BarackObama"
返回:False
python代码
# -*- coding:utf-8 -*-
class Different:
def checkDifferent(self, iniString):
# write code here
string=iniString
array=list(string)
for i in range(0,len(array)-1):
for j in range(i+1,len(array)-1):
if array[i]==array[j]:
return False
return True