从给定字符串中删除重复项

给一根绳子 s ,任务是删除给定字符串中的所有重复项。 下面是删除字符串中重复项的不同方法。

null

方法1(简单)

C++

// CPP program to remove duplicate character
// from character array and print in sorted
// order
#include <bits/stdc++.h>
using namespace std;
char *removeDuplicate( char str[], int n)
{
// Used as index in the modified string
int index = 0;
// Traverse through all characters
for ( int i=0; i<n; i++) {
// Check if str[i] is present before it
int j;
for (j=0; j<i; j++)
if (str[i] == str[j])
break ;
// If not present, then add it to
// result.
if (j == i)
str[index++] = str[i];
}
return str;
}
// Driver code
int main()
{
char str[]= "geeksforgeeks" ;
int n = sizeof (str) / sizeof (str[0]);
cout << removeDuplicate(str, n);
return 0;
}


JAVA

// Java program to remove duplicate character
// from character array and print in sorted
// order
import java.util.*;
class GFG
{
static String removeDuplicate( char str[], int n)
{
// Used as index in the modified string
int index = 0 ;
// Traverse through all characters
for ( int i = 0 ; i < n; i++)
{
// Check if str[i] is present before it
int j;
for (j = 0 ; j < i; j++)
{
if (str[i] == str[j])
{
break ;
}
}
// If not present, then add it to
// result.
if (j == i)
{
str[index++] = str[i];
}
}
return String.valueOf(Arrays.copyOf(str, index));
}
// Driver code
public static void main(String[] args)
{
char str[] = "geeksforgeeks" .toCharArray();
int n = str.length;
System.out.println(removeDuplicate(str, n));
}
}
// This code is contributed by Rajput-Ji


蟒蛇3

string = "geeksforgeeks"
p = ""
for char in string:
if char not in p:
p = p + char
print (p)
k = list ( "geeksforgeeks" )


C#

// C# program to remove duplicate character
// from character array and print in sorted
// order
using System;
using System.Collections.Generic;
class GFG
{
static String removeDuplicate( char []str, int n)
{
// Used as index in the modified string
int index = 0;
// Traverse through all characters
for ( int i = 0; i < n; i++)
{
// Check if str[i] is present before it
int j;
for (j = 0; j < i; j++)
{
if (str[i] == str[j])
{
break ;
}
}
// If not present, then add it to
// result.
if (j == i)
{
str[index++] = str[i];
}
}
char [] ans = new char [index];
Array.Copy(str, ans, index);
return String.Join( "" , ans);
}
// Driver code
public static void Main(String[] args)
{
char []str = "geeksforgeeks" .ToCharArray();
int n = str.Length;
Console.WriteLine(removeDuplicate(str, n));
}
}
// This code is contributed by PrinciRaj1992


Javascript

<script>
// JavaScript program to remove duplicate character
// from character array and print in sorted
// order
function removeDuplicate(str, n)
{
// Used as index in the modified string
var index = 0;
// Traverse through all characters
for ( var i = 0; i < n; i++)
{
// Check if str[i] is present before it
var j;
for (j = 0; j < i; j++)
{
if (str[i] == str[j])
{
break ;
}
}
// If not present, then add it to
// result.
if (j == i)
{
str[index++] = str[i];
}
}
return str.join( "" ).slice(str, index);
}
// Driver code
var str = "geeksforgeeks" .split( "" );
var n = str.length;
document.write(removeDuplicate(str, n));
// This code is contributed by shivanisinghss2110
</script>


输出:

geksfor

时间复杂性: O(n*n) 辅助空间: O(1) 保持元素的顺序与输入相同。

方法2(使用BST) 使用 设置 它实现了一个自平衡二叉搜索树。

C++

// CPP program to remove duplicate character
// from character array and print in sorted
// order
#include <bits/stdc++.h>
using namespace std;
char *removeDuplicate( char str[], int n)
{
// create a set using string characters
// excluding ' '
set< char >s (str, str+n-1);
// print content of the set
int i = 0;
for ( auto x : s)
str[i++] = x;
str[i] = ' ' ;
return str;
}
// Driver code
int main()
{
char str[]= "geeksforgeeks" ;
int n = sizeof (str) / sizeof (str[0]);
cout << removeDuplicate(str, n);
return 0;
}


JAVA

// Java program to remove duplicate character
// from character array and print in sorted
// order
import java.util.*;
class GFG {
static void removeDuplicate( char str[], int n)
{
// Create a set using String characters
// excluding ' '
HashSet<Character> s = new LinkedHashSet<>(n - 1 );
// HashSet doesn't allow repetition of elements
for ( char x : str)
s.add(x);
// Print content of the set
for ( char x : s)
System.out.print(x);
}
// Driver code
public static void main(String[] args)
{
char str[] = "geeksforgeeks" .toCharArray();
int n = str.length;
removeDuplicate(str, n);
}
}
// This code is contributed by todaysgaurav


蟒蛇3

# Python program to remove duplicate character
# from character array and print in sorted
# order
def removeDuplicate( str , n):
s = set ()
# Create a set using String characters
for i in str :
s.add(i)
# Print content of the set
st = ""
for i in s:
st = st + i
return st
# Driver code
str = "geeksforgeeks"
n = len ( str )
print (removeDuplicate( list ( str ), n))
# This code is contributed by rajsanghavi9.


C#

// C# program to remove duplicate character
// from character array and print in sorted
// order
using System;
using System.Collections.Generic;
public class GFG{
static char []removeDuplicate( char []str, int n)
{
// Create a set using String characters
// excluding ' '
HashSet< char >s = new HashSet< char >(n - 1);
foreach ( char x in str)
s.Add(x);
char [] st = new char [s.Count];
// Print content of the set
int i = 0;
foreach ( char x in s)
st[i++] = x;
return st;
}
// Driver code
public static void Main(String[] args)
{
char []str= "geeksforgeeks" .ToCharArray();
int n = str.Length;
Console.Write(removeDuplicate(str, n));
}
}
// This code contributed by gauravrajput1


Javascript

<script>
// javascript program to remove duplicate character
// from character array and print in sorted
// order
function removeDuplicate( str , n)
{
// Create a set using String characters
// excluding ' '
var s = new Set();
// HashSet doesn't allow repetition of elements
for ( var i = 0;i<n;i++)
s.add(str[i]);
// Print content of the set
for (const v of s) {
document.write(v);
}
}
// Driver code
var str = "geeksforgeeks" ;
var n = str.length;
removeDuplicate(str, n);
// This code is contributed by umadevi9616
</script>


输出:

  efgkors

时间复杂性 :O(n日志n) 辅助空间 :O(n)

幸亏 阿尼维斯·蒂瓦里 感谢你提出这种方法。

它不保持元素的顺序与输入相同,而是按排序顺序打印它们。

方法3(使用排序) 算法:

  1) Sort the elements.  2) Now in a loop, remove duplicates by comparing the       current character with previous character.  3)  Remove extra characters at the end of the resultant string.

例子:

Input string:  geeksforgeeks1) Sort the characters   eeeefggkkorss2) Remove duplicates    efgkorskkorss3) Remove extra characters     efgkors

请注意,此方法不会保持输入字符串的原始顺序。例如,如果我们要删除geeksforgek的重复项并保持字符顺序不变,那么输出应该是geksfor,但上面的函数返回efgkos。我们可以通过存储原始订单来修改此方法。

实施:

C++

// C++ program to remove duplicates, the order of
// characters is not maintained in this program
#include<bits/stdc++.h>
using namespace std;
/* Function to remove duplicates in a sorted array */
char *removeDupsSorted( char *str)
{
int res_ind = 1, ip_ind = 1;
/* In place removal of duplicate characters*/
while (*(str + ip_ind))
{
if (*(str + ip_ind) != *(str + ip_ind - 1))
{
*(str + res_ind) = *(str + ip_ind);
res_ind++;
}
ip_ind++;
}
/* After above step string is efgkorskkorss.
Removing extra kkorss after string*/
*(str + res_ind) = ' ' ;
return str;
}
/* Function removes duplicate characters from the string
This function work in-place and fills null characters
in the extra space left */
char *removeDups( char *str)
{
int n = strlen (str);
// Sort the character array
sort(str, str+n);
// Remove duplicates from sorted
return removeDupsSorted(str);
}
/* Driver program to test removeDups */
int main()
{
char str[] = "geeksforgeeks" ;
cout << removeDups(str);
return 0;
}


C

// C++ program to remove duplicates, the order of
// characters is not maintained in this program
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
/* Function to remove duplicates in a sorted array */
char *removeDupsSorted( char *str);
/* Utility function to sort array A[] */
void quickSort( char A[], int si, int ei);
/* Function removes duplicate characters from the string
This function work in-place and fills null characters
in the extra space left */
char *removeDups( char *str)
{
int len = strlen (str);
quickSort(str, 0, len-1);
return removeDupsSorted(str);
}
/* Function to remove duplicates in a sorted array */
char *removeDupsSorted( char *str)
{
int res_ind = 1, ip_ind = 1;
/* In place removal of duplicate characters*/
while (*(str + ip_ind))
{
if (*(str + ip_ind) != *(str + ip_ind - 1))
{
*(str + res_ind) = *(str + ip_ind);
res_ind++;
}
ip_ind++;
}
/* After above step string is efgkorskkorss.
Removing extra kkorss after string*/
*(str + res_ind) = ' ' ;
return str;
}
/* Driver program to test removeDups */
int main()
{
char str[] = "geeksforgeeks" ;
printf ( "%s" , removeDups(str));
getchar ();
return 0;
}
/* FOLLOWING FUNCTIONS ARE ONLY FOR SORTING
PURPOSE */
void exchange( char *a, char *b)
{
char temp;
temp = *a;
*a   = *b;
*b   = temp;
}
int partition( char A[], int si, int ei)
{
char x = A[ei];
int i = (si - 1);
int j;
for (j = si; j <= ei - 1; j++)
{
if (A[j] <= x)
{
i++;
exchange(&A[i], &A[j]);
}
}
exchange (&A[i + 1], &A[ei]);
return (i + 1);
}
/* Implementation of Quick Sort
A[] --> Array to be sorted
si  --> Starting index
ei  --> Ending index
*/
void quickSort( char A[], int si, int ei)
{
int pi; /* Partitioning index */
if (si < ei)
{
pi = partition(A, si, ei);
quickSort(A, si, pi - 1);
quickSort(A, pi + 1, ei);
}
}


JAVA

// Java program to remove duplicates, the order of
// characters is not maintained in this program
import java.util.Arrays;
public class GFG
{
/* Method to remove duplicates in a sorted array */
static String removeDupsSorted(String str)
{
int res_ind = 1 , ip_ind = 1 ;
// Character array for removal of duplicate characters
char arr[] = str.toCharArray();
/* In place removal of duplicate characters*/
while (ip_ind != arr.length)
{
if (arr[ip_ind] != arr[ip_ind- 1 ])
{
arr[res_ind] = arr[ip_ind];
res_ind++;
}
ip_ind++;
}
str = new String(arr);
return str.substring( 0 ,res_ind);
}
/* Method removes duplicate characters from the string
This function work in-place and fills null characters
in the extra space left */
static String removeDups(String str)
{
// Sort the character array
char temp[] = str.toCharArray();
Arrays.sort(temp);
str = new String(temp);
// Remove duplicates from sorted
return removeDupsSorted(str);
}
// Driver Method
public static void main(String[] args)
{
String str = "geeksforgeeks" ;
System.out.println(removeDups(str));
}
}


蟒蛇3

# Python program to remove duplicates, the order of
# characters is not maintained in this program
# Utility function to convert string to list
def toMutable(string):
temp = []
for x in string:
temp.append(x)
return temp
# Utility function to convert string to list
def toString( List ):
return ''.join( List )
# Function to remove duplicates in a sorted array
def removeDupsSorted( List ):
res_ind = 1
ip_ind = 1
# In place removal of duplicate characters
while ip_ind ! = len ( List ):
if List [ip_ind] ! = List [ip_ind - 1 ]:
List [res_ind] = List [ip_ind]
res_ind + = 1
ip_ind + = 1
# After above step string is efgkorskkorss.
# Removing extra kkorss after string
string = toString( List [ 0 :res_ind])
return string
# Function removes duplicate characters from the string
# This function work in-place and fills null characters
# in the extra space left
def removeDups(string):
# Convert string to list
List = toMutable(string)
# Sort the character list
List .sort()
# Remove duplicates from sorted
return removeDupsSorted( List )
# Driver program to test the above functions
string = "geeksforgeeks"
print (removeDups(string))
# This code is contributed by Bhavya Jain


C#

// C# program to remove duplicates, the order of
// characters is not maintained in this program
using System;
class GFG
{
/* Method to remove duplicates in a sorted array */
static String removeDupsSorted(String str)
{
int res_ind = 1, ip_ind = 1;
// Character array for removal of duplicate characters
char []arr = str.ToCharArray();
/* In place removal of duplicate characters*/
while (ip_ind != arr.Length)
{
if (arr[ip_ind] != arr[ip_ind-1])
{
arr[res_ind] = arr[ip_ind];
res_ind++;
}
ip_ind++;
}
str = new String(arr);
return str.Substring(0,res_ind);
}
/* Method removes duplicate characters from the string
This function work in-place and fills null characters
in the extra space left */
static String removeDups(String str)
{
// Sort the character array
char []temp = str.ToCharArray();
Array.Sort(temp);
str = String.Join( "" ,temp);
// Remove duplicates from sorted
return removeDupsSorted(str);
}
// Driver Method
public static void Main(String[] args)
{
String str = "geeksforgeeks" ;
Console.WriteLine(removeDups(str));
}
}
// This code is contributed by 29AjayKumar


Javascript

<script>
function removeDuplicate(string)
{
return string.split( '' )
.filter( function (item, pos, self)
{
return self.indexOf(item) == pos;
}
).join( '' );
}
var str = "geeksforgeeks" ;
document.write( " " +removeDuplicate(str));
//This code is contributed by SoumikMondal
</script>


输出:

efgkors

时间复杂性: O(n logn)如果我们使用一些nlogn排序算法而不是快速排序。

辅助空间: O(1)

方法4(使用哈希)

算法:

1: Initialize:    str  =  "test string" /* input string */    ip_ind =  0          /* index to  keep track of location of next                             character in input string */    res_ind  =  0         /* index to  keep track of location of                            next character in the resultant string */    bin_hash[0..255] = {0,0, ….} /* Binary hash to see if character is                                         already processed or not */2: Do following for each character *(str + ip_ind) in input string:              (a) if bin_hash is not set for *(str + ip_ind) then                   // if program sees the character *(str + ip_ind) first time                         (i)  Set bin_hash for *(str + ip_ind)                         (ii)  Move *(str  + ip_ind) to the resultant string.                              This is done in-place.                         (iii) res_ind++              (b) ip_ind++  /* String obtained after this step is "the stringing" */3: Remove extra characters at the end of the resultant string.  /*  String obtained after this step is "te string" */

实施:

C++

#include <bits/stdc++.h>
using namespace std;
# define NO_OF_CHARS 256
# define bool int
/* Function removes duplicate characters from the string
This function work in-place and fills null characters
in the extra space left */
char *removeDups( char str[])
{
bool bin_hash[NO_OF_CHARS] = {0};
int ip_ind = 0, res_ind = 0;
char temp;
/* In place removal of duplicate characters*/
while (*(str + ip_ind))
{
temp = *(str + ip_ind);
if (bin_hash[temp] == 0)
{
bin_hash[temp] = 1;
*(str + res_ind) = *(str + ip_ind);
res_ind++;
}
ip_ind++;
}
/* After above step string is stringiittg.
Removing extra iittg after string*/
*(str+res_ind) = ' ' ;
return str;
}
/* Driver code */
int main()
{
char str[] = "geeksforgeeks" ;
cout << removeDups(str);
return 0;
}
// This code is contributed by rathbhupendra


C

# include <stdio.h>
# include <stdlib.h>
# define NO_OF_CHARS 256
# define bool int
/* Function removes duplicate characters from the string
This function work in-place and fills null characters
in the extra space left */
char *removeDups( char *str)
{
bool bin_hash[NO_OF_CHARS] = {0};
int ip_ind = 0, res_ind = 0;
char temp;
/* In place removal of duplicate characters*/
while (*(str + ip_ind))
{
temp = *(str + ip_ind);
if (bin_hash[temp] == 0)
{
bin_hash[temp] = 1;
*(str + res_ind) = *(str + ip_ind);
res_ind++;
}
ip_ind++;
}
/* After above step string is stringiittg.
Removing extra iittg after string*/
*(str+res_ind) = ' ' ;
return str;
}
/* Driver program to test removeDups */
int main()
{
char str[] = "geeksforgeeks" ;
printf ( "%s" , removeDups(str));
getchar ();
return 0;
}


JAVA

// Java program to remove duplicates
import java.util.*;
class RemoveDuplicates
{
/* Function removes duplicate characters from the string
This function work in-place */
void removeDuplicates(String str)
{
LinkedHashSet<Character> lhs = new LinkedHashSet<>();
for ( int i= 0 ;i<str.length();i++)
lhs.add(str.charAt(i));
// print string after deleting duplicate elements
for (Character ch : lhs)
System.out.print(ch);
}
/* Driver program to test removeDuplicates */
public static void main(String args[])
{
String str = "geeksforgeeks" ;
RemoveDuplicates r = new RemoveDuplicates();
r.removeDuplicates(str);
}
}
// This code has been contributed by Amit Khandelwal (Amit Khandelwal 1)


蟒蛇3

# Python program to remove duplicate characters from an
# input string
NO_OF_CHARS = 256
# Since strings in Python are immutable and cannot be changed
# This utility function will convert the string to list
def toMutable(string):
List = []
for i in string:
List .append(i)
return List
# Utility function that changes list to string
def toString( List ):
return ''.join( List )
# Function removes duplicate characters from the string
# This function work in-place and fills null characters
# in the extra space left
def removeDups(string):
bin_hash = [ 0 ] * NO_OF_CHARS
ip_ind = 0
res_ind = 0
temp = ''
mutableString = toMutable(string)
# In place removal of duplicate characters
while ip_ind ! = len (mutableString):
temp = mutableString[ip_ind]
if bin_hash[ ord (temp)] = = 0 :
bin_hash[ ord (temp)] = 1
mutableString[res_ind] = mutableString[ip_ind]
res_ind + = 1
ip_ind + = 1
# After above step string is stringiittg.
# Removing extra iittg after string
return toString(mutableString[ 0 :res_ind])
# Driver program to test the above functions
string = "geeksforgeeks"
print (removeDups(string))
# A shorter version for this program is as follows
# import collections
# print ''.join(collections.OrderedDict.fromkeys(string))
# This code is contributed by Bhavya Jain


C#

// C# program to remove duplicates
using System;
using System.Collections.Generic;
class GFG
{
/* Function removes duplicate characters
from the string. This function work in-place */
void removeDuplicates(String str)
{
HashSet< char > lhs = new HashSet< char >();
for ( int i = 0; i < str.Length; i++)
lhs.Add(str[i]);
// print string after deleting
// duplicate elements
foreach ( char ch in lhs)
Console.Write(ch);
}
// Driver Code
public static void Main(String []args)
{
String str = "geeksforgeeks" ;
GFG r = new GFG();
r.removeDuplicates(str);
}
}
// This code is contributed by Rajput-Ji


Javascript

<script>
// javascript program to remove duplicates
/*
* Function removes duplicate characters from the string This function work
* in-place
*/
function removeDuplicates( str) {
var lhs = new Set();
for ( var i = 0; i < str.length; i++)
lhs.add(str[i]);
// print string after deleting duplicate elements
for ( var ch of lhs)
document.write(ch);
}
/* Driver program to test removeDuplicates */
var str = "geeksforgeeks" ;
removeDuplicates(str);
// This code is contributed by umadevi9616
</script>


输出:

geksfor

时间复杂性: O(n)

要点:

  • 方法2不将字符保留为原始字符串,但方法4保留。
  • 假设输入字符串中可能包含的字符数为256。不应相应地更改任何字符。
  • 计数数组(count)的内存分配使用calloc()而不是malloc(),以将分配的内存初始化为“”。也可以使用malloc()后跟memset()。
  • 如果给定了数组中整数的范围,上述算法也适用于整数数组输入。一个示例问题是,如果输入数组只包含1000到1100之间的整数,则查找输入数组中出现的最大数

方法5 (使用 IndexOf() 方法): 先决条件: JAVA IndexOf() 方法

C++

// C++ program to create a unique string
#include <bits/stdc++.h>
using namespace std;
// Function to make the string unique
string unique(string s)
{
string str;
int len = s.length();
// loop to traverse the string and
// check for repeating chars using
// IndexOf() method in Java
for ( int i = 0; i < len; i++)
{
// character at i'th index of s
char c = s[i];
// If c is present in str, it returns
// the index of c, else it returns npos
auto found = str.find(c);
if (found == std::string::npos)
{
// Adding c to str if npos is returned
str += c;
}
}
return str;
}
// Driver code
int main()
{
// Input string with repeating chars
string s = "geeksforgeeks" ;
cout << unique(s) << endl;
}
// This code is contributed by nirajgusain5


JAVA

// Java program to create a unique string
import java.util.*;
class IndexOf {
// Function to make the string unique
public static String unique(String s)
{
String str = new String();
int len = s.length();
// loop to traverse the string and
// check for repeating chars using
// IndexOf() method in Java
for ( int i = 0 ; i < len; i++)
{
// character at i'th index of s
char c = s.charAt(i);
// if c is present in str, it returns
// the index of c, else it returns -1
if (str.indexOf(c) < 0 )
{
// adding c to str if -1 is returned
str += c;
}
}
return str;
}
// Driver code
public static void main(String[] args)
{
// Input string with repeating chars
String s = "geeksforgeeks" ;
System.out.println(unique(s));
}
}


蟒蛇3

# Python 3 program to create a unique string
# Function to make the string unique
def unique(s):
st = ""
length = len (s)
# loop to traverse the string and
# check for repeating chars using
# IndexOf() method in Java
for i in range (length):
# character at i'th index of s
c = s[i]
# if c is present in str, it returns
# the index of c, else it returns - 1
# print(st.index(c))
if c not in st:
# adding c to str if -1 is returned
st + = c
return st
# Driver code
if __name__ = = "__main__" :
# Input string with repeating chars
s = "geeksforgeeks"
print (unique(s))
# This code is contributed by ukasp.


C#

// C# program to create a unique string
using System;
public class IndexOf
{
// Function to make the string unique
public static String unique(String s)
{
String str = "" ;
int len = s.Length;
// loop to traverse the string and
// check for repeating chars using
// IndexOf() method in Java
for ( int i = 0; i < len; i++)
{
// character at i'th index of s
char c = s[i];
// if c is present in str, it returns
// the index of c, else it returns -1
if (str.IndexOf(c) < 0)
{
// adding c to str if -1 is returned
str += c;
}
}
return str;
}
// Driver code
public static void Main(String[] args)
{
// Input string with repeating chars
String s = "geeksforgeeks" ;
Console.WriteLine(unique(s));
}
}
// This code is contributed by Princi Singh


Javascript

<script>
// JavaScript program to create a unique string
// Function to make the string unique
function unique(s)
{
let str = "" ;
let len = s.length;
// loop to traverse the string and
// check for repeating chars using
// IndexOf() method in Java
for (let i = 0; i < len; i++)
{
// character at i'th index of s
let c = s[i];
// if c is present in str, it returns
// the index of c, else it returns -1
if (str.indexOf(c) < 0)
{
// adding c to str if -1 is returned
str += c;
}
}
return str;
}
// Input string with repeating chars
let s = "geeksforgeeks" ;
document.write(unique(s));
</script>


输出:

geksfor

谢谢 debjitdbb 感谢你提出这种方法。

方法6 (使用 无序地图STL 方法): 先决条件: 无序C++映射STL C++方法

C++

// C++ program to create a unique string using unordered_map
/* access time in unordered_map on is O(1) generally if no collisions occur
and therefore it helps us check if an element exists in a string in O(1)
time complexity with constant space. */
#include <bits/stdc++.h>
using namespace std;
char * removeDuplicates( char *s, int n){
unordered_map< char , int > exists;
int index = 0;
for ( int i=0;i<n;i++){
if (exists[s[i]]==0)
{
s[index++] = s[i];
exists[s[i]]++;
}
}
return s;
}
//driver code
int main(){
char s[] = "geeksforgeeks" ;
int n = sizeof (s)/ sizeof (s[0]);
cout<<removeDuplicates(s,n)<<endl;
return 0;
}


JAVA

// Java program to create a unique String using unordered_map
/* access time in unordered_map on is O(1) generally if no collisions occur
and therefore it helps us check if an element exists in a String in O(1)
time complexity with constant space. */
import java.util.*;
class GFG{
static char [] removeDuplicates( char []s, int n){
Map<Character,Integer> exists = new HashMap<>();
String st = "" ;
for ( int i = 0 ; i < n; i++){
if (!exists.containsKey(s[i]))
{
st += s[i];
exists.put(s[i], 1 );
}
}
return st.toCharArray();
}
// driver code
public static void main(String[] args){
char s[] = "geeksforgeeks" .toCharArray();
int n = s.length;
System.out.print(removeDuplicates(s,n));
}
}
// This code is contributed by gauravrajput1


蟒蛇3

# Python program to create a unique string using unordered_map
# access time in unordered_map on is O(1) generally if no collisions occur
# and therefore it helps us check if an element exists in a string in O(1)
# time complexity with constant space.
def removeDuplicates(s, n):
exists = {}
index = 0
ans = ""
for i in range ( 0 , n):
if s[i] not in exists or exists[s[i]] = = 0 :
s[index] = s[i]
print (s[index], end = '')
index + = 1
exists[s[i]] = 1
# driver code
s = "geeksforgeeks"
s1 = list (s)
n = len (s1)
removeDuplicates(s1, n)
# This code is contributed by Palak Gupta


C#

// C# program to create a unique String using unordered_map
/* access time in unordered_map on is O(1) generally if no collisions occur
and therefore it helps us check if an element exists in a String in O(1)
time complexity with constant space. */
using System;
using System.Collections.Generic;
public class GFG{
static char [] removeDuplicates( char []s, int n){
Dictionary< char , int > exists = new Dictionary< char , int >();
String st = "" ;
for ( int i = 0; i < n; i++){
if (!exists.ContainsKey(s[i]))
{
st += s[i];
exists.Add(s[i], 1);
}
}
return st.ToCharArray();
}
// driver code
public static void Main(String[] args){
char []s = "geeksforgeeks" .ToCharArray();
int n = s.Length;
Console.Write(removeDuplicates(s,n));
}
}
// This code is contributed by umadevi9616


Javascript

<script>
// javascript program to create a unique String using unordered_map
/* access time in unordered_map on is O(1) generally if no collisions occur
and therefore it helps us check if an element exists in a String in O(1)
time complexity with constant space. */
function removeDuplicates( s , n) {
var exists = new Map();
var st = "" ;
for ( var i = 0; i < n; i++) {
if (!exists.has(s[i])) {
st += s[i];
exists.set(s[i], 1);
}
}
return st;
}
// driver code
var s = "geeksforgeeks" ;
var n = s.length;
document.write(removeDuplicates(s, n));
// This code contributed by umadevi9616
</script>


输出:

geksfor

时间复杂性: O(n) 辅助空间: O(n) 谢谢 艾伦·詹姆斯·维诺伊 感谢你提出这种方法。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享