1. ホーム
  2. ジャワ

エコー文字列を決定するためのjavaの簡単な実装をいくつか紹介します。

2022-02-21 05:31:18

11年間のR&D経験、会計士からアルゴリズムエンジニアに転身、C#、c++、Java、アンドロイド、PHP、Go、js、パイソン、CNNニューラルネットワーク、4千以上のブログ記事、3千以上のオリジナル、ただあなたと共有するために、一緒に成長、一緒に進歩、私に従って、あなたにもっと乾いた知識を共有しています!

echo文字列を決定するためのjavaの簡単な実装をいくつか紹介します。
<スパン 1. 以下のように文字列を反転して、1つずつ比較します。

public class HuiWenTest {  
/** 
 * @SERLIN 
 */  
public static void main(String[] args) {  
    String str = "";  
    System.out.println("Please enter a string ");  
    Scanner input = new Scanner(System.in);  
    str = input.next();  
  
    StringBuffer sb = new StringBuffer(str);  
    sb.reverse();// reverse the string in Str  
  
    int count = 0;  
    for (int i = 0; i < str.length(); i++) {  
        if (str.charAt(i) == sb.charAt(i)) {  
            count++;  
        }  
    }  
    if (count == str.length()) {  
          
        System.out.println("This string is a palindrome string");  
    } else {  
        System.out.println("This string is not a palindrome");  
    }  
}  





<スパン 2. 以下のように文字列を反転させ、直接比較するための新しい文字列を作成します。

public class HuiWenTest2 {  
    /** 
     * @SERLIN 
     */  
    public static void main(String[] args) {  
        System.out.println("Please enter a string");  
        Scanner input = new Scanner(System.in);  
        String str = input.next();  
        StringBuilder sb = new StringBuilder(str);  
        sb.reverse();//Invert the str method  
        String newStr=new String(sb);  
        if(str.equals(newStr)){  
            System.out.println(str+"is the return string");  
        }else{  
            System.out.println(str+"not the echo string");  
        }  
    }  
}  





<スパン 3. 比較にインターセプトされた文字列を使用する、以下のように実装されています。

public class HuiWenTest3 {  
    /** 
     * @SERLIN 
     */  
    public static void main(String[] args) {  
        System.out.println("Please enter a string");  
        Scanner input = new Scanner(System.in);  
        String str = input.next();  
        int count = 0;  
        for (int i = 0; i < str.length() / 2; i++) {  
        if ((str.substring(i, i + 1)).equals(str.substring(str.length() - 1- i, str.length() - i))) {  
                count++;  
            }  
        }  
        if (count == str.length() / 2) {  
            System.out.println("is the echo string");  
        }else{  
            System.out.println("is not a palindrome");  
        }  
    }  
}  





<スパン 4. エコー数の決定(純数の決定)、以下のように実装されています。

public class HuiWenNum {  
    /** 
     * @SERLIN 
     */  
    public static void main(String[] args) {  
        int n;  
        System.out.println("Please enter an integer:");   
        // If the result is the number of palindromes, jump out of the loop  
        while (true) {  
            Scanner InpuNum = new Scanner(System.in);  
            n = InpuNum.nextInt();  
            if (isHuiWen(n)) {  
                System.out.println(n + "isHuiWenNum! ");  
                break;  
            } else {  
                System.out.println(n + "Not the number of palindromes! ");  
            }  
        }  
    }  
  
  
    // The number to determine whether the number is a palindrome  
    public static boolean isHuiWen(int n) {  
        int m = reverse(n);  
        if (m == n) {  
            return true;  
        } else {  
            return false;  
        }  
    }  
  
  
    // reverse the input number in order to determine whether it is a palindrome  
    public static int reverse(int n) {  
        int temp = 0;// temporary variable  
        int j = 0;// inverted number  
        temp = n;// the input number assigned to the temporary variable  
        while (temp ! = 0) {  
            j = j * 10 + temp % 10;  
            temp /= 10;  
        }  
        return j;  
    }  
}  

-エコー回数の定義。

負でない数については、その左辺と右辺が同じであればエコーとなる。例:121 11 など。

負の数の場合、左辺と右辺の絶対値が同じであれば回文となる。

与えられた数字が回文かどうかを判定し、回文であれば真を、回文でなければ偽を出力するアルゴリズムを設計しなさい。

c++のコードです。

#include <iostream>  
#include <math.h>  
  
using namespace std;  
  
bool isPadlindrome(int n)  
{  
    // if it is the smallest value of type int obviously not a palindrome  
    if (n == INT_MIN)  
    {  
        return false;  
    }  
  
    // absolute value  
    n = abs(n);  
  
    int tmp = 1;  
  
    // change tmp bits to be the same as n  
    while(n / tmp >= 10) // prevent tmp from overflowing  
    {  
        tmp *= 10;  
    }  
  
    // n = 0 means all bits are compared  
    while(n ! = 0)  
    {  
        // highest bit ! = lowest bit  
        if (n / tmp ! = n % 10)  
        {  
            return false;  
        }  
  
        // highest bit = lowest bit remove highest bit remove lowest bit  
        // Continue the comparison  
        n = (n % tmp) / 10;  
        tmp /= 100;  
    }  
  
    return true;  
}  
  
int main(void)  
{  
    int n;  
    cin>>n;  
  
    if (isPadlindrome(n))  
    {  
        cout<<"true"<<<endl;  
    }  
    else  
    {  
        cout<<"false"<<<endl;  
    }  
  
    return 0;  
}