Java 如何存储字符串的不同字符 公共类节点重复{ 静态最终整数,字符数=256; /*打印传递字符串中存在的重复项*/ 静态void printdinct(字符串str) { //创建一个大小为256且数量为的数组 //里面的每个字 int[]计数=新的int[字符数]; /*使用字符频率对数组进行计数*/ int i; 对于(i=0;i
我试图将不同的字符存储在字符串中。问题是我的代码删除了所有重复的元素。例如: 输入:Java 如何存储字符串的不同字符 公共类节点重复{ 静态最终整数,字符数=256; /*打印传递字符串中存在的重复项*/ 静态void printdinct(字符串str) { //创建一个大小为256且数量为的数组 //里面的每个字 int[]计数=新的int[字符数]; /*使用字符频率对数组进行计数*/ int i; 对于(i=0;i,java,string,Java,String,我试图将不同的字符存储在字符串中。问题是我的代码删除了所有重复的元素。例如: 输入:SHINCHAN 实际输出:SICA 所需输出:SHINCA(我想将每个元素存储一次) 您可以使用LinkedHashSet实现相同的功能: public class NoDuplicate { static final int NO_OF_CHARS = 256; /* Print duplicates present in the passed string */
SHINCHAN
实际输出:SICA
所需输出:SHINCA
(我想将每个元素存储一次)
您可以使用
LinkedHashSet
实现相同的功能:
public class NoDuplicate {
static final int NO_OF_CHARS = 256;
/* Print duplicates present in the passed string */
static void printDistinct(String str)
{
// Create an array of size 256 and count of
// every character in it
int[] count = new int[NO_OF_CHARS];
/* Count array with frequency of characters */
int i;
for (i = 0; i < str.length(); i++)
if(str.charAt(i)!=' ')
count[(int)str.charAt(i)]++;
int n = i;
// Print characters having count more than 0
for (i = 0; i < n; i++)
if (count[(int)str.charAt(i)] == 1)
System.out.print(str.charAt(i));
}
/* Driver program*/
public static void main(String args[])
{
String str = "SHINCHAN";
printDistinct(str);
}
}
最好是打印第一个循环中的字符。只在第一次看到它们时打印它们。然后就可以完全摆脱第二个循环
str.chars().mapToObj(e -> Character.toString((char) e))
.distinct()
.forEach(System.out::println);
static void printdinct(字符串str){
字符串s=“”;
Set origSet=new LinkedHashSet();
对于(int i=0;i
此代码将存储您的字符串@ShivamSharma-为什么不将算法更改为逐字母在字符串上运行并保存它呢。在向字符串添加字母之前,请检查该字母是否已存在。如果没有,请添加它。如果有-don't.Comment
//打印计数大于0的字符:这将是正确的做法。实际代码if(count[(int)str.charAt(i)]==1).
不会这样做。你实际上正确地计算了字符数;问题都在输出端。谢谢,@Nicholas,但是输出以集合的形式返回,而不是打印集合,您可以对其进行迭代,然后打印元素:)类似于这样的操作:origSet.forEach(System.out::println)代码>我可以将其存储在某个字符串变量中吗@Nicholas K1)因为Set没有get方法,所以不能执行origSet。get(i)
2)使用StringBuilder而不是String。因此,现在在向集合添加元素时,您可以执行以下操作:Set origSet=new LinkedHashSet();StringBuilder concat=新的StringBuilder();对于(inti=0;i
这将起作用,因为add()
返回一个布尔值
str.chars().mapToObj(e -> Character.toString((char) e))
.distinct()
.forEach(System.out::println);
/* Count array with frequency of characters */
int i;
for (i = 0; i < str.length(); i++) {
if (str.charAt(i)!=' ') {
count[(int)str.charAt(i)]++;
if (count[(int)str.charAt(i)] == 1) {
System.out.print(str.charAt(i));
}
}
}
/* Count array with frequency of characters */
int i;
for (i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch != ' ') {
count[(int) ch]++;
if (count[(int) ch] == 1) {
System.out.print(ch);
}
}
}
static void printDistinct(String str) {
String s="";
Set<Character> origSet = new LinkedHashSet<Character>();
for (int i = 0; i < str.length(); i++) {
origSet.add(str.charAt(i));
}
System.out.println(origSet);
for(char c:origSet) {
s=s+c;
}
System.out.println(s);
}