查找字符串中最后一个不重复的字符
给定一个字符串 str ,任务是找到其中最后一个不重复的字符。 例如,如果输入字符串是“GeeksForGeeks”,那么输出应该是‘r’,如果输入字符串是“GeeksQuiz”,那么输出应该是‘z’。如果没有不重复字符,则打印 -1 。 举例:
输入:str = " GeeksForGeeks " T3】输出:r “r”是从末尾开始的第一个字符,频率为 1。 输入: str = "aabbcc" 输出: -1 给定字符串的所有字符的频率都大于 1。
方法:创建一个频率数组,存储给定字符串中每个字符的频率。频率更新后,开始逐个字符遍历字符串,如果当前字符的频率为 1,则这是最后一个不重复的字符。如果所有字符的频率都大于 1,则打印-1。 以下是上述办法的实施情况:
C++
// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
// Maximum distinct characters possible
const int MAX = 256;
// Function to return the last non-repeating character
static string lastNonRepeating(string str, int n)
{
// To store the frequency of each of
// the character of the given string
int freq[MAX] = {0};
// Update the frequencies
for (int i = 0; i < n; i++)
freq[str.at(i)]++;
// Starting from the last character
for (int i = n - 1; i >= 0; i--)
{
// Current character
char ch = str.at(i);
// If frequency of the current character is 1
// then return the character
if (freq[ch] == 1)
{
string res;
res+=ch;
return res;
}
}
// All the characters of the
// string are repeating
return "-1";
}
// Driver code
int main()
{
string str = "GeeksForGeeks";
int n = str.size();
cout<< lastNonRepeating(str, n);
return 0;
}
// This code has been contributed by 29AjayKumar
Java 语言(一种计算机语言,尤用于创建网站)
// Java implementation of the approach
public class GFG {
// Maximum distinct characters possible
static final int MAX = 256;
// Function to return the last non-repeating character
static String lastNonRepeating(String str, int n)
{
// To store the frequency of each of
// the character of the given string
int freq[] = new int[MAX];
// Update the frequencies
for (int i = 0; i < n; i++)
freq[str.charAt(i)]++;
// Starting from the last character
for (int i = n - 1; i >= 0; i--) {
// Current character
char ch = str.charAt(i);
// If frequency of the current character is 1
// then return the character
if (freq[ch] == 1)
return ("" + ch);
}
// All the characters of the
// string are repeating
return "-1";
}
// Driver code
public static void main(String[] args)
{
String str = "GeeksForGeeks";
int n = str.length();
System.out.println(lastNonRepeating(str, n));
}
}
Python 3
# Python3 implementation of the approach
# Maximum distinct characters possible
MAX = 256;
# Function to return the last non-repeating character
def lastNonRepeating(string, n) :
# To store the frequency of each of
# the character of the given string
freq = [0]*MAX;
# Update the frequencies
for i in range(n) :
freq[ord(string[i])] += 1;
# Starting from the last character
for i in range(n-1,-1,-1) :
# Current character
ch = string[i];
# If frequency of the current character is 1
# then return the character
if (freq[ord(ch)] == 1) :
return ("" + ch);
# All the characters of the
# string are repeating
return "-1";
# Driver code
if __name__ == "__main__" :
string = "GeeksForGeeks";
n = len(string);
print(lastNonRepeating(string, n));
# This code is contributed by AnkitRai01
C
// C# implementation of the approach
using System;
class GFG
{
// Maximum distinct characters possible
static readonly int MAX = 256;
// Function to return the last non-repeating character
static String lastNonRepeating(String str, int n)
{
// To store the frequency of each of
// the character of the given string
int []freq = new int[MAX];
// Update the frequencies
for (int i = 0; i < n; i++)
freq[str[i]]++;
// Starting from the last character
for (int i = n - 1; i >= 0; i--)
{
// Current character
char ch = str[i];
// If frequency of the current character is 1
// then return the character
if (freq[ch] == 1)
return ("" + ch);
}
// All the characters of the
// string are repeating
return "-1";
}
// Driver code
public static void Main(String[] args)
{
String str = "GeeksForGeeks";
int n = str.Length;
Console.WriteLine(lastNonRepeating(str, n));
}
}
/* This code contributed by PrinciRaj1992 */
java 描述语言
<script>
// JavaScript implementation of the approach
// Maximum distinct characters possible
let MAX = 256;
// Function to return the last non-repeating character
function lastNonRepeating(str,n)
{
// To store the frequency of each of
// the character of the given string
let freq = new Array(MAX);
for(let i=0;i<MAX;i++)
{
freq[i]=0;
}
// Update the frequencies
for (let i = 0; i < n; i++)
freq[str[i].charCodeAt(0)]++;
// Starting from the last character
for (let i = n - 1; i >= 0; i--) {
// Current character
let ch = str[i];
// If frequency of the current character is 1
// then return the character
if (freq[ch.charCodeAt(0)] == 1)
return ("" + ch);
}
// All the characters of the
// string are repeating
return "-1";
}
// Driver code
let str = "GeeksForGeeks";
let n = str.length;
document.write(lastNonRepeating(str, n));
// This code is contributed by rag2127
</script>
Output:
r
版权属于:月萌API www.moonapi.com,转载请注明出处