簡體   English   中英

檢查字符串是否對稱和回文

[英]Check string if Symmetrical and palindrome

我只是 go 在makeuseof的對稱,它目前在 javascript 中,我將它轉換為 Java,但是第 38 行是數組的錯誤。 請檢查下面的代碼,謝謝。

import java.util.Scanner;
    class check
    {
    public static void main(String args[])
    {
        String str, rev = "";
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a string:");
        str = sc.nextLine();
        int length = str.length();
        for ( int i = length - 1; i >= 0; i-- )
            rev = rev + str.charAt(i);
        //Check if Symmetrical
        if (isSymmetrical(str)) {
            System.out.println(str +" is a symmetrical");
        } else {
            System.out.println(str +" is not a symmetrical");
        }
        //Check if palindrome
        if (str.equals(rev))
            System.out.println(str +" is a palindrome");
        else
            System.out.println(str +" is not a palindrome");
    }
    public static boolean isSymmetrical(String str){
        double midIndex;
        var length = str.length();

        if (length % 2 == 0) {
            midIndex = Math.floor(length/2);
        }
        else {
            midIndex = Math.floor(length/2) + 1;
        }
            var pointer1 = 0;
            var pointer2 = midIndex;
            while(pointer1 < midIndex && pointer2 < length) {
                if(str[pointer1] == str[pointer2]) {
                    pointer1 += 1;
                    pointer2 += 1;
                }
                else {
                    return false;
                }
            }
            return true;
    }
}

錯誤: 在此處輸入圖像描述

感謝分享String::charAt這非常有幫助

我使用 charAt 並將 double 轉換為 int。

import java.util.Scanner;
    class check
    {
    public static void main(String args[])
    {
        String str, rev = "";
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a string:");
        str = sc.nextLine();
        int length = str.length();

        for ( int i = length - 1; i >= 0; i-- )
            rev = rev + str.charAt(i);
        //Check if Symmetrical
        if (isSymmetrical(str)) {
            System.out.println(str +" is a symmetrical");
        } else {
            System.out.println(str +" is not a symmetrical");
        }
        //Check if palindrome
        if (str.equals(rev))
            System.out.println(str +" is a palindrome");
        else
            System.out.println(str +" is not a palindrome");
    }
    public static boolean isSymmetrical(String str){
        double midIndex;
        int length = str.length();
        
        if (length % 2 == 0) {
            midIndex = Math.floor(length/2);
        }
        else {
            midIndex = Math.floor(length/2) + 1;
        }
            int pointer1 = 0;
            double pointer2 = midIndex;
            while(pointer1 < midIndex && pointer2 < length) {
                if(str.charAt(pointer1) == str.charAt((int)pointer2)) {
                    pointer1 += 1;
                    pointer2 += 1;
                }
                else {
                    return false;
                }
            }
            return true;
    }
}

Output: 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM