博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一个只出现一次的字符
阅读量:7170 次
发布时间:2019-06-29

本文共 1181 字,大约阅读时间需要 3 分钟。

题目描述

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
 
第一种方法:
利用ASCII码用字符作为数组的下标索引存储,字符出现的次数即是对应索引的值,俩次循环,时间复杂度为O(n),最后做个判断即可。
1 public class Solution { 2     public int FirstNotRepeatingChar(String str) { 3         char[] c = str.toCharArray(); 4         int[] a = new int[123];  //注意这里不能填122,会数组越界,加1即可 5         for (char d : c) // 即遍历字符数组c的每一个字符,并将它以ASCII码作为下标存储到整型数组中 6             a[(int) d]++; 7         for (int i = 0; i < c.length; i++) 8             if (a[(int) c[i]] == 1) 9                 return i;   //从字符数组找到第一个只出现一次的字符,并返回它的位置10         return -1;11     }12 13     public static void main(String[] args) {14         String abs = "NXWtnzyoHoBhUJaPauJaAitLWNMlkKwDYbbigdMMaYfkVPhGZcrEwpv";15         Solution solution = new Solution();16         int p = solution.FirstNotRepeatingChar(abs);17         System.out.println(p);18 19     }20 }

 

 

第二种方法:

使用HashMap映射的性质来求解问题

1 import java.util.HashMap; 2  3 public class Solution { 4     public int FirstNotRepeatingChar(String str) { 5         HashMap 
map = new HashMap
(); 6 for(int i=0;i

 

转载于:https://www.cnblogs.com/Octopus-22/p/9496282.html

你可能感兴趣的文章
A trick in loading Fixture to test django application
查看>>
经典SQL语句
查看>>
canvas 画椭圆
查看>>
NormalMap
查看>>
java中的注解(一)
查看>>
linux 02 基础命令
查看>>
表单提交中get与post的区别
查看>>
@Transactional注解
查看>>
erlang 时间处理
查看>>
Ubuntu安装pintos
查看>>
Retrofit原理学习
查看>>
hdu Dropping tests 0/1分数规划(二分求值)
查看>>
source命令
查看>>
C、C++混合编程之extern "C"
查看>>
【题解】洪水
查看>>
销傲中国式销售过程管理系统功能概述
查看>>
IDEA 学习笔记之 Java项目开发深入学习(1)
查看>>
重建二叉树 (剑指offer第六题)
查看>>
爬虫基础 pyquery 详解
查看>>
QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置
查看>>