String is Palindrome or not in Java 8 Stream API

 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.

 


 package org.practice.basicprgms;


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




Post a Comment

0 Comments