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

题目描述
找出字符串中第一个只出现一次的字符
输入描述:
输入一个非空字符串
输出描述:
输出第一个只出现一次的字符,如果不存在输出-1
示例1
输入
asdfasdfo
输出
o

思路:注意没有的情况;所以先将所有出现一次的加入列表;然后列表为空则打印-1,其他打印第一个

while True:
    try:
        string=input().strip()
        result=[]
        for each in string:
            if string.count(each)==1:
                result.append(each)
        if result:
            print(result[0])
        else:
            print('-1')
    except:
        break

java没有计算次数
思路一:通过删除字符deleteCharAt(i)构成的子串判断有木有该字符,没有则只出现一次;用到.toString().contains()
用flag位来记录
用索引i遍历,charAt(i)得到每个字符

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            String str=in.nextLine();
            if (str==null || str.length()==0)//前两种情况要注意单独判断
                System.out.println(-1);
            else if(str.length()==1)
                System.out.println(str);
            else{
                boolean flag=false;
                for(int i=0;i<str.length();i++){
                    StringBuffer sb=new StringBuffer(str);
                    StringBuffer sub=sb.deleteCharAt(i);//删除某一元素的子串,判断是否还包含,不包含就出现一次
                    if(!sub.toString().contains(str.charAt(i)+"")){//whyif(!sub.toString().contains(str.charAt(i)))不行
                        System.out.println(str.charAt(i));
                        flag=true;
                        break;
                    }
                }
                if(flag==false)
                    System.out.println(-1);
            }
        }
    }
}

思路二:判断字符的首次出现和最后一次出现index是否相同,相同则表示只出现一次

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            String str=in.nextLine();
            if (str==null || str.length()==0)//前两种情况要注意单独判断
                System.out.println(-1);
            else if(str.length()==1)
                System.out.println(str);
            else{
                boolean flag=false;
                for(char c:str.toCharArray()){//用foreach的方法得到每个字符
                    if(str.indexOf(c)==str.lastIndexOf(c)){//判断首次出现index和最后一次出现index
                        System.out.println(c);
                        flag=true;
                        break;
                    }
                }
                if(flag==false)
                    System.out.println(-1);
            }
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值