python数据结构之字符串查找两例

查找字符串中最长连续数字子串

 问题描述

 查找给定字符串中最长的数字字串,返回其起始下标,长度和字串.例如:

 input  :abc12345cd123ef234567df

 output:15 6  234567

实现

'''
查找给定字符串中最长的数字字串,返回其起始下标,长度和字串.例如:
input  :abc12345cd123ef234567df
output:15 6 234567
'''
def find_max_length_str(string):
    str_length = len(string)
    i = 0
    max_length = 0
    num_length = 0
    start_num = 0
    while i < str_length:
        if string[i] > '0' and string[i] < '9':
            start_num = i
            num_length = 0
            while i < str_length and string[i] > '0' and string[i] < '9':
                i += 1
                num_length += 1
            if num_length != 0 and max_length <= num_length:
                max_length = num_length
        i += 1
    return start_num, num_length, string[start_num:start_num + num_length]

 只需遍历一遍字符串,时间复杂度:O(n)

查找数字字符串中最长连续相同数字字串

 问题描述

查找给定数字串中最长连续相同字串,返回其起始下标,长度和子串.例如

input:11233344555666666

output:11 6 666666

 实现

'''
找到数字串中最长连续字串,返回其起始下标,长度和子串
input  :11233344555666666
output:11 6 666666
'''
def find_same_sequence_num(string):
    str_length = len(string)
    i = 0
    max_length = 0
    start_num = 0
    num_length = 0
    while i < str_length:
        if i + 1 < str_length and string[i] == string[i + 1]:
            start_num = i
            num_length = 1
            while i + 1 < str_length and string[i] == string[i + 1]:
                i += 1
                num_length += 1
            if num_length != 0 and max_length <= num_length:
                max_length = num_length
        i += 1
    return start_num, num_length, string[start_num:start_num + num_length]

同样只需遍历一遍字符串,时间复杂度为O(n)

时间: 2024-10-11 23:36:19

python数据结构之字符串查找两例的相关文章

c数据结构的字符串查找的Brute-Force算法

#include<stdio.h> #include<malloc.h> #include<string.h> //定义字符串的结构体 typedef struct { char *str;//字符串 int maxLength;//最大可以存放字符的长度 int length;//目前的字符长度 }DString; //1.初始化操作 //初始化操作用来建立和存储串的动态数组空间以及给相关的数据域赋值 void Initiate(DString *s,int max,

Python -- 值转换为字符串的两种机制

可以通过以下两个函数来使用这两种机制:一是通过str函数,它会把值转换为合理形式的字符串,以便用户可以理解:而repr会创建一个字符串,它以合法的Python表达式的形式来表示值.下面是一些例子: >>> print repr("Hello, world!") 'Hello, world!' >>> print repr(10000L) 10000L >>> print str("Hello, world!")

Python数据结构之字符串类型(str)

字符串类型(str) 字符串说明 转义字符 字符串运算符 字符串格式化 字符串内置的函数 一.字符串说明 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串,只需要为变量赋值即可,如:Str = "hello world" 访问字符串中的值: Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用. >>> print("hello world") hello wor

python数字转换为字符串的两种方式

主要包括两种形式进行转换: 第一种是str(),将值转换为用户便于阅读的形式: 另一种是repr(),将值转换为合法的python表达式. >>> print repr("Hello, world!") 'Hello, world!' >>> print repr(10000L) 10000L >>> print str("Hello, world!") Hello, world! >>> pr

编程实现字符串查找strstr,find

字符串查找两种情况,查找返回子字符串的指针位置和在字符串中的位置. 1. const char* strstr(const char* src, const char* sub) { if (src == NULL && sub == NULL) { return src; } const char* ps = src; const char* pb = sub; while (*src) { do { if (!*ps) { return src; } } while (*pb++ ==

python数据结构与算法 29-1 哈希查找

前面的章节中,我们利用数据集中元素的相对位置信息来提高查找算法的性能. 比方知道列表是有序的,能够使用二分查找.本节我们走得更远一些,创建一个数据结构,使得查找性能提高到O(1).称为哈希查找. 要做到这种性能,我们要知道元素的可能位置.假设每一个元素就在他应该在的位置上,那么要查找的时候仅仅须要一次比較得到有没有的答案,但以下将会看到.不是这么回事. 哈希表是这样一种数据集合,元素的保存的时候就存在easy找到位置上.哈希表表中每个位置,一般称为槽位,每个槽位都能保存一个数据元素并以一个整数命

python数据结构之数字和字符串

python数据类型: Number(数字) String(字符串) List(列表) Dictonary(字典) Tuple(元组) sets(集合) 其中数字.字符串.元组是不可变的,列表.字典是可变的. 对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其他变量引用原有对象的话(即引用计数为0),原有对象就会被回收). 数字 int:整数    1.正负数   2.十六进制(表示方式为0x或者0X开头.例如:0xff)   3.八

Python中字符串查找效率比较

Python中字符串查找方式有多种,常见的有re.match/search or str.find 用一个例子来说明各种方式的效率如下: from timeit import timeit import re def find(string, text): if string.find(text) > -1: pass def re_find(string, text): if re.match(text, string): pass def best_find(string, text): i

abap中查找某字符串的两种方法

abap中查找某字符串的两种方法: 一.RPR_ABAP_SOURCE_SCAN 可以用于搜索SAP中的程序代码,一般使用时填写开发类.程序名及需要查找的字符串即可,选择屏幕布局和功能很简单,熟悉ABAP代码的人一看就明白了,不多解释了,使用方法及截图如下.选择范围太大的话很慢,可以考虑放到后台运行,结束了再看结果. 用这个程序查看某些特征的代码很有效,比如查找所有程序中这样的代码等. 1 SE38回车 2 程序名:RPR_ABAP_SOURCE_SCAN 3 F8 Execute 二.当然也可