剑指OFFER之第一个只出现一次的字符(九度OJ1283)
时间:2022-04-22
本文章向大家介绍剑指OFFER之第一个只出现一次的字符(九度OJ1283),主要内容包括题目描述:、解题思路:、全部代码、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
题目描述:
在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。
输入:
输入有多组数据 每一组输入一个字符串。
输出:
输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。
样例输入:
ABACCDEFF
AA
样例输出:
1
-1
解题思路:
首先考虑到时间复杂度,对字符串进行排序或者双层扫描都会到达O(nlong)---O(n^2)的地步。
所以我们考虑额外使用一个数组进行计数,线性时间扫描数组,然后再按照原来的顺序扫描数组找到次数为1的,进行输出。
for(i=0;i<length;i++){
cnt[c[i]-'A']++;
}
for(i=0;i<length;i++){
if(cnt[c[i]-'A'] == 1){
num = i;
break;
}
}
全部代码
#include <stdio.h>
#include <string.h>
int main(){
int i;
char c[10000];
int cnt[24];
while(scanf("%s",&c)!=EOF){
memset(&cnt,0,sizeof(int)*24);
int num = -1;
int length = strlen(c);
for(i=0;i<length;i++){
cnt[c[i]-'A']++;
}
for(i=0;i<length;i++){
if(cnt[c[i]-'A'] == 1){
num = i;
break;
}
}
printf("%dn",num);
}
return 0;
}
/**************************************************************
Problem: 1283
User: xhalo
Language: C
Result: Accepted
Time:20 ms
Memory:912 kb
****************************************************************/
- Foundation:高级的响应式前端框架
- [信息安全] 2.密码工具箱(续)
- 脑科学发展的助推器
- BFIThumb:WordPress 中替代TimThumb 进行裁图的选择
- jquery 操作ajax 相关方法
- SQL SERVER 2008 Hierarchyid数据类型
- Html5 学习利器 Web Standards Update for Microsoft Visual Studio 2010 SP1
- MongoDB 客户端 MongoVue
- HttpClient介绍
- 10个使用 Foundation 框架开发的WordPress 主题推荐
- jQuery 效果使用
- 几款更换WordPress 后台UI 的插件推荐
- 入门:构建简单的Web API
- WordPress 编辑器快捷键——让写作来得更方便些吧!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法