从一个字符串中找出第一个不重复字符:
输入,“saskdfw234sad2t356sadfg”; 输出k;
输入,“sasdf23sad2t3sadf”; 输出t;
输入,“saskdfwfgwk23sad23sadfg”; 输出NULL;
面试的时候碰到的,当时没做做出来,只想到用hashtable,但是实在是能力不够,短时间做不出来,回来后上网查了资料,发现确实有hashtable的解法,也有提出倒序遍历思想的,试了一下,下面是我的程序,如果有错误,还请朋友指出来,谢谢~
#include <stdio.h>
#include <string.h>
int main(void)
{
int a[1024]; /* 这个地方我取256或512的时候都不能得到正确的答案,why?*/
char *s="saskdfwfgwk23sad23sadfg";
int i,len;
char c=' ',prev;
len = strlen(s);
for(i=len-1; i>=0; i--)
{
(a[s[i]])++;
if(a[s[i]]==1)
{
prev = c;
c = s[i];
}
printf("prev=%c,c=%c, a[s[i]]=%d, s[i]=%c\n",prev,c,a[s[i]],s[i]);
}
if(a[c]==1)
{
printf("c: %c\n", c);
}else if(a[prev]==1)
{
printf("c: %c\n", prev);
}else
{
printf("c: %s\n", "NULL");
}
return 0;
}
在网上搜索到一个hashtable的算法,只能针对不含数字的字符串进行处理,我上面给出的数据测试行不通,谁能帮忙改一下?
#include<stdio.h>
#include<string.h>
int num[26]={0};
int in[26]={0};
int main()
{
char *s="aaedaa";
int i;
for(i=0;i<strlen(s);i++)
{
num[s[i]-'a']++;
in[s[i]-'a']=i;
}
int min=strlen(s);
for(i=0;i<26;i++)
if(num[i]==1 && in[i]<min)
{
min=i;
}
printf("%c\n",min+'a');
return 0;
}
分享到:
相关推荐
根据给定的文件信息,我们可以总结出以下关于“求一个字符串中的连续出现次数最多的字串”的相关知识点: ### 一、问题定义与分析 #### 1.1 问题背景 在计算机科学中,字符串处理是常见且重要的任务之一。本问题是...
题目要求我们找出字符串`t`中所有不在字符串`s`中出现的字符,并按照`t`中的顺序排列组成新的字符串存储到`p`所指向的空间里。同时,新字符串`p`中不能包含重复的字符。 - **示例一**:如果`s`为"12345",而`t`为...
1. 首先,初始化变量 `charMap` 来存储每个字符及其第一次出现的位置,以及变量 `result` 用来保存第一个不重复字符的信息。 ```javascript var str = str || "", // 确保str是一个字符串,并且可以为空字符串 i =...
在JavaScript编程语言中,"找出字符串中第一个不重复的字符"是一个常见的字符串处理问题,它涉及到数据结构(如哈希表)和简单的遍历算法。下面我们将深入探讨这个问题的解决方案,以及背后的逻辑。 首先,我们需要...
`indexOf()`方法用于查找子字符串在主字符串中的第一次出现的索引,如果找不到则返回-1。如果需要找到所有出现的位置,我们需要通过循环调用`indexOf()`,每次从上次找到的位置之后开始搜索。 以下是一个简单的示例...
例如,我们有字符串s1="kitten"和s2="sitting",我们可以构建一个7x7的矩阵,矩阵的对角线上的值(除了第一行和第一列)都是0,因为将一个空字符串转换为自身不需要任何操作。然后,我们可以逐行逐列填充矩阵,根据...
5. **遍历第一个字符串**:使用`match()`方法,找到第一个字符串中与正则表达式匹配的所有字符: ```javascript var matches1 = str1.match(regex); ``` 然后,将这些匹配的字符添加到`uniqueChars`数组中。 6....
在Java编程中,求字符串的正向和反向最大公共字符串是一个常见的字符串处理问题。这个问题的核心在于找到一个字符串与其反转后的最长相同子序列。我们可以通过动态规划或者双指针等方法来解决这个问题。下面将详细...
假设有一个字符串S,我们的任务是找出其中最长的重复子串,即在S中至少出现两次的最长连续子序列。这个问题不仅涉及到字符串匹配的基本概念,还可能涉及到数据结构和算法的高级应用。 ### 二、数据结构设计 为了...
给定一个只包含小写字母的字符串s,找出字符串中的第一个不重复的字符,并返回其索引。如果不存在这样的字符,返回-1。 例如: 输入:s = "leetcode" 输出:0 解释:'l' 是第一个唯一字符。 输入:s = ...
- `查找(字符串, 子字符串, 开始位置)`:在字符串中查找子字符串,返回第一次出现的位置,找不到则返回-1。 - `替换(原字符串, 要替换的字符串, 替换后的字符串)`:将原字符串中所有出现的指定子字符串替换为另一...
在字符串基础操作中,字符串模式匹配算法是指在文本(主串)中找出给定字符串(模式)的所有出现位置。字符串模式匹配算法可以分为两大类:基于是自动机或字符串组合特点的算法和对文本建立索引的算法。本节课只讨论...
给定一个只包含小写字母的非空字符串s,找出字符串中的第一个不重复的字符。如果存在这样的字符,返回它的索引;如果不存在,返回-1。 解题思路: 1. 使用哈希表:创建一个大小为26的哈希表(可以使用Java的HashMap...
该实例代码旨在在一个字符串中找出连续最长的数字子串,并将其长度返回,同时将这个最长数字子串存储到另一个字符串中。这个问题属于字符串处理和算法的范畴,具体使用了C语言进行实现。以下是对代码的详细解释: 1...
在字符串全排列问题中,我们需要找出一个给定字符集的所有可能的排列组合。例如,对于字符串 "abc",全排列包括 "abc"、"acb"、"bac"、"bca"、"cab" 和 "cba"。这个问题可以使用回溯法来解决,其基本步骤如下: 1. ...
给定一个字符串 `S`,你需要找出其中所有长度为偶数的回文子串,并计算它们的总数。 **输入**: 输入包含一个字符串 `S`,字符串的长度不超过10^6。 **输出**: 输出一个整数,表示长度为偶数的回文子串的总数。 ##...
给定一个字符串,目标是找出其中第一个出现且唯一(不重复)的字符。例如,如果字符串为"hello",则结果应该是'l',因为在'h'、'e'之后,'l'首次以单个实例出现。 解决这个问题的常见方法是使用哈希映射(HashMap)...