アルゴリズムは毎日の練習に質問します---71日目:回文数

一緒に書く習慣をつけましょう!「ナゲッツデイリーニュープラン・4月アップデートチャレンジ」に参加して6日目です。クリックしてイベントの詳細をご覧ください

1.問題の説明

 回文の x 場合 は整数 を返し 、それ以外の場合はを返し  ます。xtruefalse

回文は、正の順序(左から右)と逆の順序(右から左)で同じものを読み取る整数です。

  • たとえば、121 は回文であり、ではあり 123 ません。

トピックリンク:回文数

第二に、主題の要件

例1

输入: x = 121
输出: true
复制代码

例2

输入: x = -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
复制代码

訪問

1.数学思想、回文判断
2.建议用时15~35min
复制代码

3.問題分析

回文数!起きなさい。

25.gif

回文数は、前から後ろにトラバースした結果が後ろから前にトラバースした結果に対応することです。スタックと組み合わせたアプリケーションはたくさんありますが、この問題は比較的単純です。数値を配列に直接格納できます。

まず、負の数は直接falseを出力します。これは、-記号を他の数とペアにすることができないためです。

次に、データ範囲は最大10ビットであり、12ビットサイズの配列は各桁を格納するのに十分です。

番号が順番に配列に格納された後、最初の番号が順番に判断され、等しくない場合はfalseが返されます。

最後に、上記のエラー条件のいずれも満たされない場合は、trueを返します。

第四に、エンコーディングの実装

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0)//负数返回false
            return false;
        int i,n=0,a[12];//初始化数据
        while(x)//数字存入数组
        {
            a[n++]=x%10;
            x=x/10;
        }
        for(i=0;i<n/2;i++)//首尾依次向内收缩判断
            if(a[i]!=a[n-i-1])//不相等,输出false
                return false;
        return true;//返回true
    }
};
复制代码

5.テスト結果

2.png

1.png

おすすめ

転載: juejin.im/post/7083287441133535239