回文字符串概念:如果一个字符串是轴对称,那么它就是一个回文字符串。写出一个方法,判断输入的内容是否是回文字符串,不能使用现成的方法,只能使用基本的语法。
例如:a 不是回文字符串,aBa,abba 是回文字符串
面试时写错了,回去又重新考虑了下,记录一下,平时还是多加练习
def func(str):
if not isinstance(str,basestring):
print "{} 不是字符串类型 ".format(str)
elif len(str)-1<=0:
print "{} is not 回文字符串".format(str)
else:
i=0
j=len(str)-1
while i<j:
if str[i]!=str[j]:
break
i+=1
j-=1
if i<j:
print "{} is not 回文字符串".format(str)
else:
print "{} is 回文字符串".format(str)
python3.6
方法一:切片属于高级特性不算基本语法,但是也列举出来
def is_palindromic(a):
if not isinstance(a,str):
print("{}不是字符串".format(a))
elif a==a[::-1]:
print("{}是回文字符串".format(a))
else:
print("{}不是回文字符串".format(a))
方法二如下:
def is_palindromic(a):
if not isinstance(a,str):
print("{}不是字符串".format(a))
elif len(a) == 1:
print("{}不是回文字符串".format(a))
else:
m = len(a)//2 #python36要用//双地板除
n = len(a)
flag = True
for i in range(m):
if a[i] != a[n-i-1]:
flag = False
break
if flag:
print("{}是回文字符串".format(a))
else:
print("{}不是回文字符串".format(a))
可以的,大兄弟多谢提醒哈
String str = "aaabaaa";
char []arr = str.toCharArray();
char []arr1 = new char[str.length()];
char []arr2 = new char[str.length()];
for (int i = 0; i <arr.length; i++) {
arr1[i] = arr[i];
}
int j = 0;
for (int i = arr.length-1; i >= 0; i--) {
arr2[j] = arr[i];
j++;
}
for (int i = 0; i < arr2.length; i++) {
if(arr1[i] != arr2[i]){
System.out.println("false");
}
}
@zhuzhu_mx 用了下 toCharArray() 可以吗?
这个太简单了啊。你是我们京东的?不好好干活偷偷跑去面试。。
def checker(text):
if not isinstance(text,(str,bytes)):
# raise Exception("输入不是字符串")
return False
if len(text)<2:
return False
half_len = len(text)//2
if text[:half_len]==text[half_len+len(text)%2:][-1::-1]:
return True
else:
return False
if __name__=='__main__':
print(checker('aabb'))
print(checker('aa'))
print(checker('abba'))
print(checker('ababa'))
print(checker('-bab-'))
print(checker('o(∩_∩)o'))
print(checker('a'))
print(checker(''))
print(checker(233))
我也不想写成这么骚的操作
def test(str_):
def test_(str_):
if len(str_)==0:return True
h,str_,t=str_[0],str_[1:-1],str_[-1]
return False if h!=t else test_(str_)
return False if len(str_)==1 else test_(str_)
print test('a')
print test('aBa')
print test('abba')
import timeit
print timeit.repeat(setup="from __main__ import test",stmt='test("abba")')
又改的骚了点
def test(str_):
def test_(str_):
h,str_,t=str_[0],str_[1:-1],str_[-1]
return True if len(str_)==0 else (False if h!=t else test_(str_))
return False if len(str_)==1 else test_(str_)
按照 5 楼的思路,来了个 python 版的:
str='aaaabaaaa'
lst=[]
lst.extend(str)
lst1=[]
j=len(lst)
i = 0
while i<j:
lst1.append(lst[i])
i = i + 1
if lst == lst1:
print(str+'是回文字符串')
else:
print(str + '不是回文字符串')
public Boolean isSymmetrical(String str){
if (str==null||str.trim().equals("")){
return false;
}
int length = str.length();
if (length<=1){
return false;
} else {
int index = (int) Math.floor(length / 2.0);
for (int i=0;i<index;i++){
if (str.charAt(i)==str.charAt(length-1-i)){
return true;
}else {
return false;
}
}
}
return false;
}
好难看!!
let str = 'aBsBa'
function check(str) {
if (str.length % 2 !== 0)
str = str.slice(0, str.length / 2) + str.slice(str.length / 2 + 1, str.length)
return str.split('').slice(0, str.split('').length / 2).toString() == str.split('').slice(str.split('').length / 2, str.split('').length).reverse().toString()
}
check(str)