Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Java program to print the last unique character of a string [3 ways]

In this post, I will be sharing different ways to write a program to print the last Unique Character of a string in Java. But before moving forward, we will understand the question with the help of examples:

Input: "Alive is Awesome"
Output: m


Input: "Be in present"
Output: t


Read Also: Find the first unique character of a string in Java

Let's dive deep into the topic:

Print the last unique Character of a String

1. Using indexOf() and lastIndexOf() methods [Easiest]


We will use the below algorithm to print the last unique character of a string in Java:

a. Scan the given string from end to start.

b. Call indexOf() and lastIndexOf() methods on the given string. indexOf() method in Java returns the position of the first occurrence of a given character in a string whereas lastIndexOf() method in Java returns the position of the last occurrence of a given character in a string.

Logic


If positions returned by the indexOf() and lastIndexOf() methods of the specified character are the same, then that character is the last non-repeated character in a string as shown below in the example:

public class LastUniqueCharacter {
public static void main(String args[]) {
String givenString = "Alive is Awesome";
// Converting String to StringBuilder
StringBuilder str = new StringBuilder(givenString);
str = str.reverse();
for(char ch : str.toString().toCharArray())
{
if(givenString.indexOf(ch) == givenString.lastIndexOf(ch))
{
System.out.println(ch);
break;
}
}
}
}


Output:
m

2. Using LinkedHashMap


We are going to use the below algorithm to find out the last unique character of a string in Java:

Logic


1. Count the occurrences of each character in the given string using LinkedHashMap.

2. Iterate through the Map and add all the characters whose occurrence is 1 to the ArrayList.

3. Print the last element of the ArrayList that represents the last unique character of a given string.

import java.util.Map;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.ArrayList;

public class LastUniqueCharacter2 {
public static void main(String args[]) {
String givenString = "Be in present";
ListCharacter> list = new ArrayList();
MapCharacter, Integer> map = new LinkedHashMap();
for (char ch: givenString.toCharArray())
{
if(map.containsKey(ch))
{
map.put(ch, map.get(ch) + 1);
}
else
{
map.put(ch, 1);
}
}
for(Map.EntryCharacter, Integer> element: map.entrySet())
{
if((int)element.getValue() == 1)
list.add(element.getKey());
}
System.out.println(list.get(list.size()-1));
}
}


Output:
t

3. Using Java 8 Stream API


We can also use Java 8 Stream API to print the last unique character of a string as shown below in the example:

import java.util.Map;
import java.util.LinkedHashMap;

public class LastUniqueCharacter3 {
public static void main(String args[]) {
String givenString = "Love Yourself";
MapCharacter, Integer> map = new LinkedHashMap();
for (char ch: givenString.toCharArray())
{
if(map.containsKey(ch))
{
map.put(ch, map.get(ch) + 1);
}
else
{
map.put(ch, 1);
}
}
char ch = map.entrySet().stream().filter(x -> x.getValue() == 1).reduce((first, second) -> second).get().getKey();
System.out.println(ch);
}
}


Output:
f

That's all for today. Please mention in the comments if you know any other way of printing the last unique character of a string in Java.


This post first appeared on Java Hungry, please read the originial post: here

Share the post

Java program to print the last unique character of a string [3 ways]

×

Subscribe to Java Hungry

Get updates delivered right to your inbox!

Thank you for your subscription

×