Hi All,
Today I have released new video on "Java Interview Coding Question | String is Palindrome or not in Java 8 Stream API"
This is frequently asked question in Java Interview.
Please watch full video, share, like and Subscribe youtube channel and press bell icon. So you will get latest video notification.
|
|
|
import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; public class PalindromeString { public static void main(String[] args) { String input = "madam"; String revStr = ""; // 1. Using StringBuilder reverse() inside Stream
boolean result = Stream.of(input) .map(str -> new StringBuilder(str).reverse().toString()) .anyMatch(rev -> rev.equals(input)); System.out.println("Using StringBuilder reverse(): String is Palindrome? : "+ result);
// 2. Using reduce() (Very Popular Interview Method) revStr = input.chars() .mapToObj(c -> String.valueOf((char)c)) .reduce("", (a,b) -> b + a);
System.out.println("Using reduce() : String is Palindrome? :" + revStr.equals(input));
// 3. Using IntStream.range() and allMatch() method result = IntStream.range(0, input.length()) .allMatch(i -> input.charAt(i) == input.charAt(input.length() - 1 -i));
System.out.println("IntStream.range() and allMatch() : String is Palindrome? :" + result); // 4. Using IntStream.range() and noneMatch() method result = IntStream.range(0, input.length()) .noneMatch(i -> input.charAt(i) != input.charAt(input.length() - i -1));
System.out.println("Using IntStream.range() and noneMatch() : String is Palindrome? :" + result);
// 5. Using StringBuilder in Stream reduce() method revStr = input.chars() .mapToObj(c -> (char) c) .reduce( new StringBuilder(), (sb, c) -> sb.insert(0, (char)c), StringBuilder::append ).toString();
System.out.println("StringBuilder in Stream reduce() : String is Palindrome? :" + revStr.equals(input));
// 6. Using Stream.iterate() method madam revStr = IntStream.iterate(input.length()-1, i -> i - 1) .limit(input.length()) .mapToObj(i -> String.valueOf(input.charAt(i))) .collect(Collectors.joining());
System.out.println("Using Stream.iterate() method : String is Palindrome? :" + revStr.equals(input)); // 7. Using IntStream.range() and joining() to build reverse revStr = IntStream.range(0, input.length()) .mapToObj(i -> input.charAt(input.length() - i -1)) .map(String::valueOf) .collect(Collectors.joining());
System.out.println(" Using IntStream.range() and joining() : String is Palindrome? :" + revStr.equals(input)); } } output: Using StringBuilder reverse(): String is Palindrome? : true Using reduce() : String is Palindrome? :true IntStream.range() and allMatch() : String is Palindrome? :true Using IntStream.range() and noneMatch() : String is Palindrome? :true StringBuilder in Stream reduce() : String is Palindrome? :true Using Stream.iterate() method : String is Palindrome? :true Using IntStream.range() and joining() : String is Palindrome? :true |
0 Comments