首页 > 试题广场 >

找出字符串中第一个只出现一次的字符

[编程题]找出字符串中第一个只出现一次的字符
  • 热度指数:200374 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
找出字符串中第一个只出现一次的字符


数据范围:输入的字符串长度满足



输入描述:

输入一个非空字符串



输出描述:

输出第一个只出现一次的字符,如果不存在输出-1

示例1

输入

asdfasdfo

输出

o

import java.util.Arrays;
import java.util.Scanner;
import java.util.TreeMap;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String st=in.nextLine();
        int len=st.length();
        for(int i=0;i<st.length();i++){
            char cha=st.charAt(i);
            int shou=st.indexOf(cha);
            int wei=st.lastIndexOf(cha);
           
            if(shou==wei){
                System.out.print(st.charAt(shou));
                break;
            }else{
                if(i==st.length()-1){
                System.out.print(-1);
                }else{
                    continue;
                }
            }
           
        }
       
       
       
       


       
       
       

    }
   

}
编辑于 2024-04-01 12:15:09 回复(0)
import java.util.Scanner;
import java.util.LinkedHashMap;
import java.util.Map;
/**
 * @ClassName HJ59
 * @Description TODO
 * @Author 21916
 * @Date 2024/2/17 16:45
 */

public class Main {
    public static void main(String[] args) {
        boolean flag=false;
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
           String s = sc.nextLine();
           Map<Character,Integer> map = new LinkedHashMap<Character,Integer>();
           char[] chars =  s.toCharArray();
           for(int i=0;i<s.length();i++){
               if(map.containsKey(chars[i])) {
                   Integer value = map.get(chars[i]);
                   // 检查value是否为null
                   if (value != null) {
                       // 对value进行加一操作
                       value = value + 1;
                       // 更新Map中key对应的value
                       map.put(chars[i], value);
                       //  System.out.println(map.get(chars[i]));
                   }
               }
               else{
                   map.put(chars[i],1);
               }
           }
            for (Map.Entry<Character, Integer> entry : map.entrySet()) {
                if(entry.getValue()==1){
                    System.out.println(entry.getKey());
                    flag=true;
                    break;
                }
            }
            if(flag==false){
                System.out.println(-1);
            }

        }

    }
}

发表于 2024-02-17 20:44:03 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        String tmp = str;
        String res = null;
        while(tmp.length() != 0){
            String tp = String.valueOf(tmp.charAt(0));
            String st = tmp.replaceAll(tp, "");
            if(tmp.length()-st.length()==1){
                res = tp;
                break;
            }else{
                tmp = st;
            }
        }
        if(res==null){
            System.out.println("-1");
        }else{
            System.out.println(res);
        }
    }
}

发表于 2023-10-29 22:36:15 回复(0)
import java.util.Scanner;
import java.util.ArrayList;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        if (in.hasNext()) {
            String inString = in.next();
            for (int i = 0; i < inString.length(); i++) {
                char a = inString.charAt(i);
                if (inString.lastIndexOf(a) == inString.indexOf(a)) {
                    System.out.println(a);
                    return;
                }
            }
            System.out.println("-1");
        }
    }
}


发表于 2023-09-07 10:08:28 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] ch=sc.nextLine().toCharArray();
        Map<Character,Integer> map=new LinkedHashMap<>();
        for(int i=0;i<ch.length;i++){
            if(!map.containsKey(ch[i])){
                map.put(ch[i],1);
            }else{
                map.put(ch[i],map.get(ch[i])+1);
            }
        }
        Set entrySet=map.entrySet();
        Iterator it=entrySet.iterator();
        int time=0;
        while(it.hasNext()){
            Map.Entry entry=(Map.Entry)it.next();
            if((Integer)entry.getValue()==1){
                Character key=(Character)entry.getKey();
                time++;
                System.out.println(key);
                break;
            }
        }
        if(time==0){
            System.out.println(-1);
        }
    }
}

发表于 2023-07-15 18:49:18 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str = in.nextLine();
        System.out.println(funHJ59(str));
    }
    public static String funHJ59(String str) {
        for (int i = 0; i < str.length(); i++) {
            if (str.length() - str.replace(str.charAt(i) + "", "").length() == 1) {
                return str.charAt(i) + "";
            }
        }
        return "-1";
    }
}
发表于 2023-06-17 22:17:51 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str=in.nextLine();
        //去重后的集合
        ArrayList<Character> list1=new ArrayList<>();
        //重复的元素集合
        ArrayList<Character> list2=new ArrayList<>();
        for(int i=0;i<str.length();i++){
            if(!list1.contains(str.charAt(i))){
                list1.add(str.charAt(i));
            }else{
                list2.add(str.charAt(i));
            }
        }
        for(int i=0;i<str.length();i++){
            if(!list2.contains(str.charAt(i))){
                System.out.print(str.charAt(i));
                return;
            }
        }
        System.out.print(-1);
    }
}

发表于 2023-06-02 17:11:07 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String a = in.next();
        Map<Character, Integer> map = new LinkedHashMap<Character, Integer>();
        for (int i = 0; i < a.length(); i++) {
            map.put(a.charAt(i), map.getOrDefault(a.charAt(i), 0) + 1);
        }
        StringBuffer sub2 = new StringBuffer();
        map.forEach((key, val)-> {
            if (val == 1) {
                sub2.append(key);
            }
        });
        if (sub2.length() > 0) {
            System.out.println(sub2.substring(0, 1));
        } else {
            System.out.println(-1);
        }
    }
}

发表于 2023-06-01 15:56:32 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        Map<Character, Integer> map = new HashMap<>();
        char[] chs = str.toCharArray();
        for(char ch : chs){
            int count = map.getOrDefault(ch,0)+1;
            map.put(ch,count);
        }
        for(char ch : chs){
            if(map.get(ch) == 1){
                System.out.println(ch);
                return;
            }
        }
        System.out.println(-1);
    }
}

发表于 2023-04-24 19:33:58 回复(0)
 Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String a = in.next();
            char[] chars = a.toCharArray();
            Map<Character, Integer> map = new HashMap<Character, Integer>();
            for (int i = 0; i < chars.length; i++) {
                if (map.containsKey(chars[i])) {
                    map.put(chars[i], 1 + map.get(chars[i]));
                } else {
                    map.put(chars[i], 1);
                }
            }
            Character c = null;
            TreeMap<Integer, Character> treeMap = new TreeMap<Integer, Character>();
            for (int i = 0; i < chars.length; i++) {
                for (Map.Entry<Character, Integer> entrySet : map.entrySet()) {
                    if (entrySet.getKey() == chars[i] && entrySet.getValue() == 1) {
                        c = chars[i];
                        treeMap.put(i, c);
                    }
                }
            }
            if (c != null) {
                System.out.println(treeMap.firstEntry().getValue());

            } else {
                System.out.println(-1);
            }

        }
发表于 2023-04-12 22:10:09 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String s =in.nextLine();
       
          for(int i=0;i<s.length();i++){
            if(i==s.length()-1 && s.indexOf(s.charAt(i)) != s.lastIndexOf(s.charAt(i))){System.out.println(-1);break;}
            if(s.indexOf(s.charAt(i)) == s.lastIndexOf(s.charAt(i))){
                System.out.println(s.charAt(i));
                break;}
            }
    }
}
发表于 2023-03-21 12:36:21 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String str = in.nextLine();
            char[] arr=str.toCharArray();
            int length=str.length();
            for(int i=0;i<str.length();i++){
                String str1=str.replace(String.valueOf(arr[i]),"");
                if(str1.length()+1==length){
                    System.out.println(arr[i]);
                    break;
                }else if(str1.length()+2==length){
                    if(i==str.length()-1){
                        System.out.println(-1);
                    }
                    continue;

                }
            }
        }
    }
}

发表于 2023-02-28 19:49:54 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        char d = ' ';
        for (char c : str.toCharArray()) {
            if (str.length() - str.replaceAll(c + "", "").length() == 1) {
                d = c;
                break;
            }
        }
        // 注意这里如果没有+ ""会输出d的ASCII码111
        System.out.println(d == ' ' ? -1 : d + "");
    }
}

发表于 2023-02-27 11:32:56 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String line = in.next();
            boolean notFind = true;
            for(int i = 0; i < line.length(); i++){
                boolean find = false;
                for(int j = 0; j < line.length(); j++){
                    if(i == j){
                        continue;
                    }
                    if(line.charAt(i) == line.charAt(j)){
                        find = true;
                        break;
                    }
                }
                if(!find){
                    notFind = false;
                    System.out.println(line.charAt(i));
                    break;
                }
            }
            if(notFind) {
                System.out.println("-1");
            }
        }
    }
}
发表于 2023-02-16 09:09:58 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别

        String str=in.nextLine();

        //定义不存在变量
        boolean flag=true;
        for(int i=0;i<str.length();i++){
           String s=str.replace(String.valueOf(str.charAt(i)),"");
           if(str.length()-s.length()==1){
            System.out.print(str.charAt(i));
            flag=false;
            break;
           }
        }
        if(flag) System.out.print(-1);
    }
}

发表于 2023-02-05 15:48:07 回复(0)
public static void zifu() {
        Scanner scanner = new Scanner(System.in);
        scanner.useDelimiter("\n");
        while (scanner.hasNext()) {
            String S = scanner.next();
            int[]&nbs***bsp;= new int[128];
            Arrays.fill(or, S.length());
            for (int i = 0; i < S.length(); i++) {
                 if (or[S.charAt(i)]!=S.length()) {
                     or[S.charAt(i)]=S.length()+1;
                     continue;
                 }
                 or[S.charAt(i)]=i;
            }
            OptionalInt min = Arrays.stream(or).min();
            System.out.println(min.getAsInt() < S.length() ? S.charAt(min.getAsInt()) : "-1");
        }
    }

发表于 2023-01-20 17:44:03 回复(0)
感觉我这个很蠢哈哈哈
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (sc.hasNext()) { // 注意 while 处理多个 case
            String str = sc.nextLine();
            char[] ch = str.toCharArray();
            int n = ch.length;
            String s;
            StringBuffer sb = new StringBuffer();
            Map<Character,Integermap = new HashMap<>();
            int flag = 0;
            for(int i=0;i<n;i++){
                if(!map.containsKey(ch[i])){
                    map.put(ch[i],1);
                }else{
                    map.put(ch[i],map.get(ch[i])+1);
                }
            }
            for(char c:str.toCharArray()){
                if(map.get(c)==1){
                    sb.append(c);
                    flag = 1;
                }
            }
            s = String.valueOf(sb);
            if(flag ==1){
                System.out.print(s.substring(0,1));
            }
            else if(flag !=1){
                System.out.print(-1);
            }
            }
        }
    }
发表于 2022-11-22 16:27:18 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean flag = true;
        while (scanner.hasNextLine() && flag) {
            String str = scanner.nextLine();
            for (int i = 0; i < str.length(); i++) {
                String replaceStr = str.replaceAll(String.valueOf(str.charAt(i)), "");
                if (str.length() - replaceStr.length() == 1) {
                    System.out.println(str.charAt(i));
                    flag = false;
                    break;
                }
            }
        }
        if (flag) {
            System.out.println("-1");
        }
    }
}

发表于 2022-10-21 22:24:17 回复(0)

问题信息

难度:
87条回答 54809浏览

热门推荐

通过挑战的用户

查看代码