编写一个函数isHui(n),用以实现对正整数n判断是否是回文数
时间: 2023-07-16 12:12:15 浏览: 122
以下是一个Python实现的isHui(n)函数:
```python
def isHui(n):
"""
判断n是否为回文数
"""
s = str(n)
return s == s[::-1]
```
该函数首先将n转换成字符串s,然后利用Python的字符串切片功能`[::-1]`将字符串s倒序排列后再与原字符串s进行比较,若二者相同则返回True,否则返回False。
相关问题
实验2.3:回文数判断 题目描述:编写一个函数isHui(n),用以实现对正整数n判断是否是回文数。 提示:回文数定义:是指顺读与倒读数字相同的正整数。如12321。说明如下: (1)求字符串长度函数len(s) (2)当前位置为i,则其对称位置为j=len(s)-1-i (3)切片方法取出字符判断是否相对:s[i:i+1]==s[j:j+1]用python编写代码
下面是实现函数isHui(n)的Python代码:
```python
def isHui(n):
s = str(n)
length = len(s)
for i in range(length//2):
if s[i] != s[length-1-i]:
return False
return True
```
使用方法:
```python
print(isHui(12321)) # True
print(isHui(12345)) # False
```
解释:
首先将正整数n转化为字符串s,然后获取字符串长度length。接下来,遍历字符串s的前一半字符,依次判断其与对称位置字符是否相等。如果有任意一组不相等,则该数字不是回文数,返回False。如果遍历完前一半字符,都相等,则该数字是回文数,返回True。
分析时间复杂度public static void main(String[] args) { Scanner sc=new Scanner(System.in); int N=sc.nextInt(); String num[]=new String[N]; for(int i=0;i<N;i++) { int res=0; num[i]=sc.next(); if(ishui(num[i])) {//输入即回文 System.out.println(0+num[i]); break; } while(!ishui(num[i])) {//非回文 int a=0; int temp=Integer.valueOf(num[i]);//String转int while(temp!=0) { int n=temp%10; a=a*10+n; temp/=10; } temp=a+Integer.valueOf(num[i]);// num[i]=String.valueOf(temp); res++; } System.out.println(res+" "+num[i]); } } //判断字符串 private static boolean ishui(String a) { int i=0;int j=a.length()-1; while(i<j) { if(a.charAt(i)!=a.charAt(j)) { return false; } i++;j--; } return true; }
这段代码的时间复杂度分析如下:
1. 第1行创建了一个 Scanner 对象,时间复杂度为 O(1)。
2. 第2行读取一个整数 N,时间复杂度为 O(1)。
3. 第3行创建一个长度为 N 的字符串数组,时间复杂度为 O(N)。
4. 第4~18行的 for 循环中,每次迭代都会进行如下操作:
a. 第6行判断当前字符串是否为回文,时间复杂度为 O(N)。
b. 如果不是回文,则进入 while 循环。
c. while 循环中,第11行将字符串转换成整数,并且第16行将整数转换成字符串,这两个操作的时间复杂度均为 O(N)。
d. while 循环中,第12~15行的操作次数取决于字符串的长度 N,时间复杂度为 O(N)。
e. 循环次数最多为 N 次,因此整个 for 循环的时间复杂度为 O(N^2)。
5. ishui 函数的时间复杂度为 O(N)。
因此,整个程序的时间复杂度为 O(N^2)。
阅读全文