【九度】题目1283:第一个只出现一次的字符

来源:互联网 发布:被芯哪个牌子好 知乎 编辑:程序博客网 时间:2024/05/16 07:34
题目地址:http://ac.jobdu.com/problem.php?pid=1283
题目描述:

在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符。

输入:

输入有多组数据
每一组输入一个字符串。

输出:

输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1。

样例输入:
ABACCDEFFAA
样例输出:
1-1
答疑:
解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-8006-1-1.html
再次看这个题目的时候,想到了数组处理。
数组的巧妙运用。
声明一个大小为26的数组array,初始值都赋值为0;
循环读取到的字符串,将字符-'A'作为array的下标。
循环字符串的长度,发现array[input[i]-'A'] == 1break就是结果。
C++ AC
#include <stdio.h>#include <string.h>const int maxn = 10002;char input[maxn];int array[26];int i;int main(){    while(scanf("%s",input) != EOF){        memset(array,0,sizeof(array));        int len = strlen(input);        for(i = 0; i < len ; i ++){            array[input[i]-'A']++;        }        int first = -1;        for(i = 0; i < len ; i ++){            if(array[input[i]-'A'] == 1){                first = i;                break;            }        }        printf("%d\n",first);    }    return 0;}/**************************************************************    Problem: 1283    User: wangzhenqing    Language: C++    Result: Accepted    Time:20 ms    Memory:1032 kb****************************************************************/

Java AC

import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.StreamTokenizer;  public class Main {    /*     * 1283     */    public static void main(String[] args) throws Exception {        StreamTokenizer st = new StreamTokenizer(new BufferedReader(                new InputStreamReader(System.in)));        while (st.nextToken() != StreamTokenizer.TT_EOF) {            String input = st.sval;            int len = input.length();            int array[] = new int[26];            for (int i = 0; i < len; i++) {                array[input.charAt(i)-'A']++;            }            int first = -1;            for (int i = 0; i < len; i++) {                if (array[input.charAt(i)-'A'] == 1) {                    first = i;                    break;                }            }            System.out.println(first);        }    }}/**************************************************************    Problem: 1283    User: wangzhenqing    Language: Java    Result: Accepted    Time:260 ms    Memory:24624 kb****************************************************************/
0 0
原创粉丝点击