精华内容
下载资源
问答
  • 判断回文字符串

    2019-04-23 13:13:37
    判断回文字符串
                   

    《递归入门》

    所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如"level" 、 “aaabbaaa”


    题目:判断一个字符串是否为回文

    解法:递归


    递归的作用在于把问题的规模不断缩少,直到问题缩少到能简单地解决

    问:如何缩少问题规模?

    答:通过观察可以知道,一个回文字符串其中内部也是回文。所以,我们只需要以去掉两端的字符的形式一层层检查,每一次的检查都去掉了两个字符,这样就达到了缩少问题规模的目的。


    新问题与原问题有着相同的形式

    当去掉两端字符后的字符串,其产生的新问题同样是检查这个字符串是否回文。


    递归的结束需要简单情景

    1. 字符串长度可能会奇数或偶数:

    • 如果字符串长度是奇数,字符串会剩下最中间那位字符,但其不影响回文。当检查到长度为1的时候即代表此字符串是回文
    • 如果字符串长度是偶数,当两端的字符串两两比较检查后不会剩下字符。即检查到长度为0的时候即代表此字符串是回文

    2. 如果检查到两端两个字符不相同。则说明此字符串不是回文,直接返回0,不需要继续检查


    递归跳跃的信任

    此题的递归分解比较简单,所以对在递归过程中细节的实现,我们可以直接看出。但是一些较复杂的题目上,我们就没那么容易看出过程中细节的实现,这时候就需要我们递归跳跃的信任!


    #include <iostream>using namespace std;int fun(int low, int high, char *str, int length)if (length == 0 || length == 1)  return    1if (str[low] != str[high])  return    0return fun(low+1, high-1, str, length-2);}int main()char    str[]="aaabdaaa"int     length = strlen(str); //返回1代表是, 0代表不是 cout << fun(0, length-1, str, length) << endlreturn    0;}




               
    展开全文
  • java判断回文字符串几种简单的实现

    万次阅读 多人点赞 2017-10-18 00:49:49
    java判断回文字符串几种简单的实现

    11年it研发经验,从一个会计转行为算法工程师,学过C#,c++,java,android,php,go,js,python,CNN神经网络,四千多篇博文,三千多篇原创,只为与你分享,共同成长,一起进步,关注我,给你分享更多干货知识!

    java判断回文字符串几种简单的实现:


    1.将字符串倒置后逐一比较,实现如下:

    [java] view plain copy
     
    1. public class HuiWenTest {  
    2. /** 
    3.  * @SERLIN 
    4.  */  
    5. public static void main(String[] args) {  
    6.     String str = "";  
    7.     System.out.println("请输入一个字符串");  
    8.     Scanner input = new Scanner(System.in);  
    9.     str = input.next();  
    10.   
    11.     StringBuffer sb = new StringBuffer(str);  
    12.     sb.reverse();// 将Str中的字符串倒置  
    13.   
    14.     int count = 0;  
    15.     for (int i = 0; i < str.length(); i++) {  
    16.         if (str.charAt(i) == sb.charAt(i)) {  
    17.             count++;  
    18.         }  
    19.     }  
    20.     if (count == str.length()) {  
    21.           
    22.         System.out.println("此字符串是一个回文字符串");  
    23.     } else {  
    24.         System.out.println("此字符串不是一个回文字符串");  
    25.     }  
    26. }  

     


    2.将字符串倒置后创建新字符串直接比较,实现如下:

     

     

    [java] view plain copy
     
    1. public class HuiWenTest2 {  
    2.     /** 
    3.      * @SERLIN 
    4.      */  
    5.     public static void main(String[] args) {  
    6.         System.out.println("请输入一个字符串");  
    7.         Scanner input = new Scanner(System.in);  
    8.         String str = input.next();  
    9.         StringBuilder sb=new StringBuilder(str);  
    10.         sb.reverse();//将str倒置的方法  
    11.         String newStr=new String(sb);  
    12.         if(str.equals(newStr)){  
    13.             System.out.println(str+"是回文字符串");  
    14.         }else{  
    15.             System.out.println(str+"不是回文字符串");  
    16.         }  
    17.     }  
    18. }  

     


    3.使用截取字符串的方式比较,实现如下:

     

     

    [java] view plain copy
     
    1. public class HuiWenTest3 {  
    2.     /** 
    3.      * @SERLIN 
    4.      */  
    5.     public static void main(String[] args) {  
    6.         System.out.println("请输入一个字符串");  
    7.         Scanner input = new Scanner(System.in);  
    8.         String str = input.next();  
    9.         int count = 0;  
    10.         for (int i = 0; i < str.length() / 2; i++) {  
    11.         if ((str.substring(i, i + 1)).equals(str.substring(str.length() - 1- i, str.length() - i))) {  
    12.                 count++;  
    13.             }  
    14.         }  
    15.         if (count == str.length() / 2) {  
    16.             System.out.println("是回文字符串");  
    17.         }else{  
    18.             System.out.println("不是回文字符串");  
    19.         }  
    20.     }  
    21. }  

     


    4.判断回文数字(判断纯数字),实现如下

     

     

    [java] view plain copy
     
    1. public class HuiWenNum {  
    2.     /** 
    3.      * @SERLIN 
    4.      */  
    5.     public static void main(String[] args) {  
    6.         int n;  
    7.         System.out.println("请输入一个整数:");   
    8.         // 如果结果为回文数,跳出循环  
    9.         while (true) {  
    10.             Scanner InpuNum = new Scanner(System.in);  
    11.             n = InpuNum.nextInt();  
    12.             if (isHuiWen(n)) {  
    13.                 System.out.println(n + "是回文数!");  
    14.                 break;  
    15.             } else {  
    16.                 System.out.println(n + "不是回文数!");  
    17.             }  
    18.         }  
    19.     }  
    20.   
    21.   
    22.     // 判断的数字是否是回文数  
    23.     public static boolean isHuiWen(int n) {  
    24.         int m = reverse(n);  
    25.         if (m == n) {  
    26.             return true;  
    27.         } else {  
    28.             return false;  
    29.         }  
    30.     }  
    31.   
    32.   
    33.     // 将输入的数字进行倒置,以便进行判断是否是回文数  
    34.     public static int reverse(int n) {  
    35.         int temp = 0;// 临时变量  
    36.         int j = 0;// 倒置后的数字  
    37.         temp = n;// 将输入的数字赋值给临时变量  
    38.         while (temp != 0) {  
    39.             j = j * 10 + temp % 10;  
    40.             temp /= 10;  
    41.         }  
    42.         return j;  
    43.     }  
    44. }  

     

     

    ·回文数的定义:

    对于非负数 其左右两边完全相同 则是回文。 e.g: 121 11 等

    对于负数 其绝对值左右两边完全相同 则是回文。 e.g: -121 -11 等

     

    设计一个算法判断给定的数是否为回文数,如果是,输出true 反之 输出false;

     

    贴代码:

    [cpp] view plain copy
     
    1. #include <iostream>  
    2. #include <math.h>  
    3.   
    4. using namespace std;  
    5.   
    6. bool isPadlindrome(int n)  
    7. {  
    8.     // 如果是int类型的最小值 显然不是回文数  
    9.     if (n == INT_MIN)  
    10.     {  
    11.         return false;  
    12.     }  
    13.   
    14.     // 绝对值  
    15.     n = abs(n);  
    16.   
    17.     int tmp = 1;  
    18.   
    19.     // 将tmp位数变为与n一致  
    20.     while(n / tmp >= 10) // 防止tmp溢出  
    21.     {  
    22.         tmp *= 10;  
    23.     }  
    24.   
    25.     // n = 0 表示所有位比较完  
    26.     while(n != 0)  
    27.     {  
    28.         // 最高位 != 最低位  
    29.         if (n / tmp != n % 10)  
    30.         {  
    31.             return false;  
    32.         }  
    33.   
    34.         // 最高位 = 最低位 去掉最高位 去掉最低位  
    35.         // 继续比较  
    36.         n = (n % tmp) / 10;  
    37.         tmp /= 100;  
    38.     }  
    39.   
    40.     return true;  
    41. }  
    42.   
    43. int main(void)  
    44. {  
    45.     int n;  
    46.     cin>>n;  
    47.   
    48.     if (isPadlindrome(n))  
    49.     {  
    50.         cout<<"true"<<endl;  
    51.     }  
    52.     else  
    53.     {  
    54.         cout<<"false"<<endl;  
    55.     }  
    56.   
    57.     return 0;  
    58. }  

     

    展开全文
  • 详解判断回文字符串和回文数算法的C语言代码!一、判断一个字符串是否为回文字符串#include #include #include //包含strlen#define YES 1#define NO 0#define uchar unsigned char#define uint unsigned int#define...

    详解判断回文字符串和回文数算法的C语言代码!

    一、判断一个字符串是否为回文字符串

    #include

    #include

    #include //包含strlen

    #define YES 1

    #define NO  0

    #define uchar unsigned char

    #define uint unsigned int

    #define ushort unsigned short

    #define ulong unsigned long

    #define u8  uchar

    #define u16 ushort

    #define u32 ulong

    u8 IsPalindromeString(u8 *pStr);

    int main(void)

    {

    u8 array[] = "abcdefgfedcba";

    u8 value = 0;

    value = IsPalindromeString(array);

    if (value)

    {

    printf("是回文字符串!\n");

    }

    else

    {

    printf("不是回文字符串!\n");

    }

    return 0;

    }

    //思路:

    //(1)用两个指针分别指向字符串的头和尾

    //(2)比较两指针指向的字符是否相同

    //(3)若相同则头指针向后移动,尾指针向前移动

    //(4)若不同则返回NO,说明不是回文字符串

    //(5)重复2.3.4

    //(6)若头尾指针指向位置相邻或相同则返回YES,说明是回文字符串

    u8 IsPalindromeString(u8 *pStr)

    {

    u8 num = strlen((const char *)pStr);

    u8 *pHead = pStr;//指向字符串的头

    u8 *pTail = pStr+num-1;

    for (; pHead<=pTail; pHead++, pTail--)

    {

    if (*pHead != *pTail)

    {

    return NO;

    }

    else if (pHead == pTail || pHead+1 == pTail)

    {

    return YES;

    }

    }

    }

    二、判断一个数是否为回文数

    #include

    #include

    #include //包含strlen

    #define YES 1

    #define NO  0

    #define uchar unsigned char

    #define uint unsigned int

    #define ushort unsigned short

    #define ulong unsigned long

    #define u8  uchar

    #define u16 ushort

    #define u32 ulong

    u8 IsPalindromeNumber(u32 num);

    int main(void)

    {

    u32 num = 1221;

    u8 value = 0;

    value = IsPalindromeNumber(num);

    if (value)

    {

    printf("是回文数!\n");

    }

    else

    {

    printf("不是回文数!\n");

    }

    return 0;

    }

    /*

    分析:因为回文数从高位向低位看的数值和从低位向高位看的数值是相等的。

    所以:可以将数值从低位到高位进行拆分,然后再重新组合,通过判断新组合

    的数值是否和原数值相等即可判断是否为回文数!

    */

    u8 IsPalindromeNumber(u32 num)

    {

    u32 temp = num;

    u32 sum = 0;

    while (num)

    {

    sum = sum*10 + num%10;//将num从低位到高位依次取出然后再重新组合成一个整数

    num /= 10;//将num去掉个位数

    }

    if(sum == temp)

    {

    return YES;

    }

    else

    {

    return NO;

    }

    }

    展开全文
  • C语言判断回文字符串代码
  • 文章目录一、回文字符串1、概念2、实例二、判断回文字符串1、创建程序 - 回文字符串判断.py2、运行程序,查看结果 一、回文字符串 1、概念 回文字符串是一个正读和反读都一样的字符串。 2、实例 “abcdedcba” ...

    一、回文字符串

    1、概念

    回文字符串是一个正读和反读都一样的字符串。

    2、实例

    • “abcdedcba”
    • “天长地久地长天”

    二、判断回文字符串

    1、创建程序 - 回文字符串判断.py

    在这里插入图片描述

    # -*- coding: utf-8 -*-
    """
    Created on Sun Oct  4 19:01:00 2020
    
    @author: howard
    
    判断一个字符串是否回文字符串
    """
    
    def isParlindromic01(str):
        for i in range(len(str) // 2):
            if str[i] != str[-i - 1]:
                return False
        return True
    
    def isParlindromic02(str):
        ls = list(str)
        ls.reverse()
        return str == ''.join(ls)
    
    def isParlindromic03(str):
        return str == ''.join(reversed(str))
    
    def isParlindromic04(str):
        return str == str[::-1]
    
    str = input('输入字符串:')
    
    print('方法一:', end='')
    if isParlindromic01(str):
        print('{}是回文字符串。'.format(str))
    else:
        print('{}不是回文字符串。'.format(str))
        
    print('方法二:', end='')
    if isParlindromic02(str):
        print('{}是回文字符串。'.format(str))
    else:
        print('{}不是回文字符串。'.format(str))
        
    print('方法三:', end='')
    if isParlindromic03(str):
        print('{}是回文字符串。'.format(str))
    else:
        print('{}不是回文字符串。'.format(str))
        
    print('方法四:', end='')
    if isParlindromic04(str):
        print('{}是回文字符串。'.format(str))
    else:
        print('{}不是回文字符串。'.format(str))
    

    2、运行程序,查看结果

    在这里插入图片描述

    展开全文
  • 华为机试题目 简单地判断回文字符串的小程序
  • 7-6 判断回文字符串

    2021-03-13 15:02:40
    python 判断回文字符串
  • 7-1 判断回文字符串

    千次阅读 2020-11-25 08:37:40
    7-1 判断回文字符串 (15分) 输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。 输入格式: 输入在一行中给出一个不超过80个字符长度的、以回车结束的非空...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,453
精华内容 2,981
关键字:

判断回文字符串