我尝试打印字符串没有重复,但我没有得到正确的输出,在这里我暴露了我的代码片段。
class Duplicatestring
{
public static void main(String [] args)
{
String word = "";
String[] ip ={"mani" ," manivannan","raghv ","mani"};
for(int i =0; i<ip.length; i++)
{
for(int j = i+1; j<=ip.length; j++)
{
if(ip[i].equals(ip[j])){
word = word+ip[i];
}
}
System.out.println(word);
}
}
}
还有一件事是我不想使用集合这是我的任务,请求为此提供任何适当的解决方案。
示例:
Input -> {mani, manivanna,raghv, mani};
output -> {mani, manivanna,raghv}
答案 0 :(得分:1)
如果您不想使用集合,那么我认为这是一项功课,所以我不想为您提供完整的解决方案,但我会指导您。
您可以拥有一个原始数组大小的辅助数组。现在你编写两个嵌套循环,对于每个单词,如果找到重复,则用辅助数组标记为1.
在此过程之后,您将在辅助数组中得到类似的内容:
[0,0,0,1]
现在,您可以并行迭代数组,并且如果辅助数组中的相应索引为0,则仅打印元素。
解决方案是O(n 2 )。
答案 1 :(得分:1)
你的循环不正确。
要解决此问题,您可以使用Set
来消除重复的单词。
如果问题必须通过O(n ^ 2)循环解决,则以下代码将起作用:
public class Duplicatestring {
public static void main(String[] args) {
String[] ip = { "mani", " manivannan", "raghv ", "mani" };
for (int i = 0; i < ip.length; i++) {
boolean duplicated = false;
//search back to check if a same word already exists
for (int j = i - 1; j >= 0; j--) {
if(ip[i].equals(ip[j])) {
duplicated = true;
break;
}
}
if(!duplicated) {
System.out.println(ip[i]);
}
}
}
}
答案 2 :(得分:0)
如果要从数组中删除副本,请调用以下方法并传递数组具有重复值..它将返回具有非重复值的数组..
call method here
ip = removeDuplicates(ip);
public static int[] removeDuplicates(int[] arr){
//dest array index
int destination = 0;
//source array index
int source = 0;
int currentValue = arr[0];
int[] whitelist = new int[arr.length];
whitelist[destination] = currentValue;
while(source < arr.length){
if(currentValue == arr[source]){
source++;
} else {
currentValue = arr[source];
destination++;
source++;
whitelist[destination] = currentValue;
}
}
int[] returnList = new int[++destination];
for(int i = 0; i < destination; i++){
returnList[i] = whitelist[i];
}
return returnList;
}
它将返回非重复值数组.. !!
答案 3 :(得分:0)
public class HelloWorld{
public static void main(String []args){
String[] names = {"john", "adam", "will", "lee", "john", "seon", "lee"};
String s;
for (int i = 0; names.length > i; i ++) {
s = names[i];
if (!isDuplicate(s, i, names)) {
System.out.println(s);
}
}
}
private static boolean isDuplicate(String item, int j, String[] items) {
boolean duplicate = Boolean.FALSE;
for (int i = 0; j > i; i++) {
if (items[i].equals(item)) {
duplicate = Boolean.TRUE;
break;
}
}
return duplicate;
}
}
<强>输出强>
john
adam
will
lee
seon
答案 4 :(得分:-1)
如果字符串顺序对你无关紧要,你也可以使用TreeSet ..检查下面的代码..简单而甜蜜。
import java.util.Arrays;
import java.util.List;
import java.util.TreeSet;
public class MyArrayDuplicates {
public static void main(String a[]){
String[] strArr = {"one","two","three","four","four","five"};
//convert string array to list
List<String> tmpList = Arrays.asList(strArr);
//create a treeset with the list, which eliminates duplicates
TreeSet<String> unique = new TreeSet<String>(tmpList);
System.out.println(unique);
System.out.println();
Iterator<Integer> iterator = unique.iterator();
// Displaying the Tree set data
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
}
}
它将打印为 -
[five, four, one, three, two]
five
four
one
three
two