Java String Reverse

  • + 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;
      }