Java String Reverse

Sort by

recency

|

1939 Discussions

|

  • + 0 comments

    import java.io.; import java.util.;

    public class Solution {

    public static void main(String[] args) {
    
        Scanner sc=new Scanner(System.in);
        String A=sc.next();
        /* Enter your code here. Print output to STDOUT. */
        StringBuffer sb = new StringBuffer(A);
        sb.reverse();
        if(A.equals(sb.toString()))
        {
            System.out.println("Yes");
        }
        else
        {
            System.out.println("No");
        }
    
       sc.close(); 
    }
    

    }

  • + 0 comments

    public static void main(String[] args) {

        Scanner sc=new Scanner(System.in);
        String A=sc.next();
        int len = 0;
        /* Enter your code here. Print output to STDOUT. */
        for(int i = A.length()-1; i>=(A.length())/2; i--){
            if(A.charAt(i) != A.charAt(len)){
                System.out.println("No");
                return;
            }
            len++;
        }
        System.out.println("Yes");
    }
    
  • + 0 comments

    Java 8 Based

      // Not optimized version
    	// Time Complexity: O(n)
    	 // Space Complexity: O(n)  due to creating a substring
    	 private static boolean isPalindrome(String input) {
            int inputLength = input.length();
            String secondHalfOfInput = input.substring(inputLength / 2);
            int secondHalfOfInputLength = secondHalfOfInput.length();
            for(int i = 0; i < inputLength / 2; i++) {
                if(input.charAt(i) != secondHalfOfInput.charAt(secondHalfOfInputLength - (i + 1))) {
                    return false;
                }
            }
    
            return true;
        }
        
      //  optimized version
    	// Time Complexity: O(n)
    	 // Space Complexity: O(1)  No substring		
        private static boolean isPalindromeOptimised(String input) {
            int left = 0;
            int right = input.length() - 1;
            while (left < right) {
                if (input.charAt(left) != input.charAt(right)) {
                    return false;
                }
                left++;
                right--;
            }
            return true;
      }
    
  • + 0 comments

    The previous one-liner solution is awsome! My idea was to use "converging iterators" approach that works in-place without copying the data (sub-strings, concatenation, etc.). What's more, this approach is very fast as it may give an answer even before reading the whole string, possibly after comparing just two letters!

    import java.util.Scanner;
    
    public class Solution {
        private static boolean isPalindrome(String str) {
            for (int f = 0, r = str.length()-1; f < r; ++f, --r) {
                if (str.charAt(f) != str.charAt(r))
                    return false;
            }
            return true;
        }
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String str = sc.nextLine();
            sc.close();
            System.out.println(isPalindrome(str) ? "Yes" : "No");
        }
    }
    
  • + 0 comments

    Java Logic just one line

        String check =  new StringBuffer(A).reverse().toString();