`
talin2010
  • 浏览: 519008 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

字符串的一些题

阅读更多

---------------------------------------------------------------------------

给定一个字符串,求其最长连续重复子串,如果有多个则返回第一个。例如 “ababc”要求返回“ab”,因为“ab”连续重复出现且最长。给出复杂度分析。

思路:设字符串长度为 len,从长度为 len/2 开始,递减测试,看是否有长度为 test 的重复连续字符串。

程序见下,时间复杂度为 O(n^3)。

#include <stdio.h>
#include <string.h>

int check(char * str, int s, int n)
{
int m = s + n;
while(str[s] == str[s + n] && s < m)
{
s++;
}
return s < m ? 0 : 1;
}

void show(char * str, int s, int n)
{
while(n-- > 0)
{
printf("%c", str[s++]);
}
printf("\n");
}

void show_max_sub_str(char * str)
{
int len = strlen(str);
int test = len / 2;
while(test)
{
int j;
for (j = 0; j + 2 * test <= len; ++j)
{
if (check(str, j, test))
{
show(str, j, test);
return;
}
}

test--;
}
}

int main(int argc, char * argv[])
{
if (argc > 1)
{
show_max_sub_str(argv[1]);
}

return 0;
}


参考:http://topic.csdn.net/t/20060608/13/4809010.html

---------------------------------------------------------------------------

给定一个关键字表,在一个文本里查找这些关键字。

思路:把关键字表建成树形,遍历文本,每一个字符建立一个指向关键字表树节点的指针,一个字符一个字符遍历下去,如果符合关键字的话,指针将在树上不断向下移动,如果可以移到叶子,说明找到一个关键字,输出,如果没找到叶子就出现不符合的现象,说明查找失败,将该指针删除,这样整篇文本遍历之后,关键字也都可以输出了。


参考:《一个人北漂的日子:北京求职90天纪实》
(http://www.it.com.cn/f/edu/0611/9/347299_1.htm)

---------------------------------------------------------------------------
分享到:
评论

相关推荐

    C语言字符串练习(习题+答案).zip

    本资源"《C语言字符串练习(习题+答案).zip》"正是针对这一需求而准备的,它包含了C语言字符串操作的专项练习题和对应的答案,帮助学习者巩固和提升在字符串处理方面的技能。 字符串在C语言中扮演着重要角色,它们...

    字符串面试题整理

    以下是一些与字符串相关的面试题目及其解题思路: 1. **字符串循环左移**:给定一个字符串和一个整数k,将字符串中的每个字符向左移动k个位置。例如,字符串"abcdefg",k=2,移动后的结果为"efgabcd"。可以使用双...

    C语言字符串的练习题和答案

    根据提供的文件信息,我们可以从中提炼出与C语言字符串操作相关的几个关键知识点: ### 字符串回文检测 #### 代码示例: ...通过这些练习题的学习,可以加深对C语言字符串处理的理解,提高编程能力。

    华为机试题:压缩字符串

    通过键盘输入一串小写字母(a~z)组成的字符串,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。 要求实现...

    oc字符串练习题

    OC字符串练习题 OC语言中的字符串处理是iOS开发中非常重要的一部分,本文将对OC语言中的字符串处理进行详细的介绍和实践操作。 字符串的基本操作 在OC语言中,字符串是使用NSString类来表示的。NSString类提供了...

    java字符串练习

    在Java编程语言中,字符串是极其重要且常用的数据类型,尤其对于初学者来说,理解和熟练掌握字符串的操作至关重要。本文将围绕“java字符串练习”这一主题,深入探讨如何解析字符串、逆序输出字符串以及处理特定格式...

    字符串常见笔试题

    1 将字符串转化为整数。2 将整数转化为字符串(考虑正负号的问题)。3 实现字符串拷贝函数strcpy(程序的完整性)。4 编程实现memcpy函数(以字节为单位的拷贝)。5 编程实现memmove函数。 等笔试题。

    1.7编程基础之字符串(30题)--题目 有链接.pdf

    标题中提到的“1.7编程基础之字符串(30题)--题目 有链接.pdf”指明了这份资料是一本关于编程基础的题集,专注于字符串相关的编程题目,并且这些题目可以在提供的链接中找到。由于文件内容中提到了多个编程题目,我们...

    面试题练习题前端 JavaScript高级语法-字符串属性

    面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端...

    Code_笔试题_字符串压缩_

    标题中的“Code_笔试题_字符串压缩_”指的是一个与编程相关的笔试题目,重点在于实现字符串的压缩功能。这类问题通常出现在技术面试或招聘过程的笔试试题中,旨在考察应聘者的编程能力和对数据结构的理解。 描述中...

    字符串计数 C语言实现 ACM习题

    本题属于ACM竞赛中的基础练习题,旨在考察参赛者对于C语言基本数据结构(如链表)及字符串处理的能力。通过解决此类问题,可以提高参赛者的编程技巧与逻辑思维能力。 ### 问题描述 题目要求统计给定字符串集合中...

    自己总结的面试题字符串

    在C++编程中,字符串处理是面试中常见的知识点,尤其是涉及到内存操作的部分。本文将深入探讨`memset`、`strcpy`、`memcpy`以及`memmove`这四个函数的使用和区别。 首先,`memset`函数用于填充内存。它的原型是`...

    C语言 不使用strcat函数实现连接两个字符串功能代码

    字符串连接就是将一个字符串连接到另一个字符串的末尾,使其组合成一个新的字符串,在字符串处理函数中,strcat 函数具有字符串连接功能。下面是用C语言实现不使用是strcat 函数实现连接两个字符串的功能。 源代码:...

    腾讯在线笔试题-字符串反转,以及把整个字符串逆序

    本知识点将围绕如何进行字符串反转以及把整个字符串逆序来进行讲解。首先,字符串反转是编程中常见的问题,常常用于各类笔试和面试中。而字符串逆序则是在反转的基础上,进一步处理,让整个字符串的顺序完全颠倒。 ...

    1.字符串高频面试题精讲

    1.字符串高频面试题精讲1.字符串高频面试题精讲1.字符串高频面试题精讲

    字符串比较问题对于长度相同的2 个字符串A和B,其距离定义为相应位置字符距离之和。2 个非空格

    字符串比较问题 Description ?问题描述: 对于长度相同的2 个字符串A和B,其距离定义为相应位置字符距离之和。2 个非空格 字符的距离是它们的ASCII码之差的绝对值。空格与空格的距离为0;空格与其它字符的距 离...

    C语言基础面试题(03-字符串函数).docx

    以上解答了C语言中涉及字符串处理的一些基础面试题,实际编程中,我们需要考虑到边界条件、效率优化和错误处理等因素,确保代码的健壮性和正确性。在面试中,理解这些基本概念并能灵活运用是至关重要的。

Global site tag (gtag.js) - Google Analytics