`

循环字符串最小表示

 
阅读更多

题目 From POJ : 

http://poj.org/problem?id=1509

 

#include <iostream>
#include <string>
using namespace std;

int minlist(string &str) {
    if(str.size() < 2) return 0;
    
    str += str;
    
    unsigned int l = 0, h = 1;
    while(h < str.size()) {
        if(str[l] > str[h]) {
            l = h;
            h = l + 1;
        } else if(str[l] < str[h]) {
            h++;
        } else {
            int k = 1;
            while(str[l+k] == str[h+k]) {
                k++;
            }
            if(h+k < str.size()) {
                if(str[l+k] > str[h+k]) {
                    l = h;
                    h = l + 1;
                } else {
                    h ++;
                }
            } else {
                h = str.size();
            }
        }
    }
    
    return l;
}

int main() {
    
    int n;
    cin>>n;
    string str;
    for(int i = 0; i < n; ++i) {
        cin>>str;
        cout<<minlist(str) + 1<<endl;
    }
    
    return 0;
}

 

 

欢迎关注微信公众号——计算机视觉:

  

0
1
分享到:
评论

相关推荐

    查找字符串中最小字符串-C语言代码

    在C语言中,查找字符串...总的来说,解决“查找字符串中最小字符串”的问题需要理解C语言中的字符串处理、数组操作以及基本的循环和条件判断。通过实践这样的编程任务,可以加深对C语言基础概念的理解,提高编程能力。

    算法文档无代码浅析“最小表示法”思想在字符串循环同构问题中的应用

    标题中提到的“最小表示法”是一种解决字符串问题的算法思想,特别是在处理字符串循环同构问题时非常有用。在深入了解之前,我们首先要明白几个基本概念。 字符串循环同构是指一个字符串可以被看作是另一个字符串的...

    最小表示法在字符串循环同构问题中的应用PPT学习教案.pptx

    本文档是一份PPT学习教案,旨在指导学习者通过最小表示法来应对字符串循环同构问题。 循环同构,顾名思义,是指在对字符串执行循环移位操作后能够得到另一个字符串的情况。例如,字符串"s1 = 'a b c d'"经过一次...

    练习SCL写函数块处对字符串进行处理,查找一个字符串内涵盖另一个字符串所有字符的最小的字符串

    本问题涉及的挑战是利用SCL编写一个函数块,该函数块能处理字符串并找到一个最小的子串,这个子串能包含另一个字符串的所有字符。我们将探讨如何实现这个功能,并了解与SCL、算法和字符解析相关的知识。 首先,我们...

    算法合集之浅析最小表示法思想在字符串循环同构问题中的应用PPT学习教案.pptx

    在字符串循环同构问题中,最小表示法能帮助我们找到字符串的一种最小表示,使得问题求解更加高效。 在本学习教案中,我们首先从问题引入开始,逐步带领学习者深入了解循环同构的定义和重要性。循环同构指的是两个...

    字符串排序方法

    - **字符串**:在JavaScript中,字符串是一种原始数据类型,用于表示文本。 - **数组**:数组是一种对象类型,用于存储多个值。 #### 2. 数组排序方法 JavaScript提供了多种方法来对数组进行排序: - **`sort()`*...

    数据结构和算法:字符串

    在编程实现字符串操作算法时,我们还需要注意一些细节,比如字符串的表示和存储方式。在某些编程语言中,字符串可能以字符数组的形式存储,而在另一些语言中则可能是一个内置的数据类型。此外,对字符串的遍历、比较...

    最小表示法

    在"浅析“最小表示法”思想在字符串循环同构问题中的应用"文档中,作者周源可能详细解释了如何构建最小表示,以及如何利用它来判断两个字符串是否循环同构。他可能阐述了以下几点: 1. **构建最小表示**:通过求解...

    编辑距离问题 对于给定的字符串A和字符串B,编程计算其编辑距离d(A,B)。

    编辑距离指的是通过一系列预定义的操作(如插入、删除或替换字符)将一个字符串转换为另一个字符串所需的最小操作次数。这个问题在自然语言处理、生物信息学以及文本比对等领域有着广泛的应用。 #### 二、编辑距离...

    最小表示法,周源ppt

    最小表示法是一种在字符串处理和算法竞赛中不太常见但非常经典的思想,主要用于解决字符串的循环同构问题。在本文中,我们将深入探讨最小表示法及其在解决特定问题上的应用。 循环同构指的是两个字符串可以通过有限...

    按照字符串顺序从小到大排序,删除重复字符

    代码中使用了两层嵌套循环,外层循环遍历整个字符串,内层循环用于比较相邻的字符并进行必要的交换。 代码中的关键部分如下: 1. `for(p=string;*p;p++)`:这是外层循环,`p` 指针从字符串的开始位置开始,遍历每...

    LeetCode判断字符串是否循环-Leetcode:力码

    LeetCode判断字符串是否循环 Leetcode 2017年4月12日 455 分蛋糕: 有g个孩子,s块蛋糕,每个孩子有一个贪心因子m,每块蛋糕可大可小n,若蛋糕大小n大于等于m,则可以分配这块蛋糕给这个孩子。每个孩子只能分得一块...

    修改字符串流程图

    标题中的“修改字符串流程图”可能是指在编程中处理字符串时的一种逻辑表示,通常涉及到字符串操作的步骤或者算法流程。这种流程图可以帮助开发者理解和实现字符串的处理过程,比如字符串的查找、替换、分割等常见...

    汇编实现字符串排序

    本项目"汇编实现字符串排序"聚焦于使用汇编语言来处理字符串数据,实现了字符串的输入、排序以及显示功能。在深入探讨这个项目之前,我们先了解汇编语言的基本概念。 1. **汇编语言基础** - **指令集**:每种...

    重复叠加字符串匹配(python)1

    2. **目标判断**:我们需要找到最小的整数 `n`,使得 `a * n`(表示 `a` 重复 `n` 次)包含字符串 `b`。如果不存在这样的 `n`,则返回 `-1`。 给定的代码提供了一个名为 `Solution` 的类,其中有一个方法 `...

    华为OD机试C卷- 字符串变换最小字符串(Java & JS & Python & C).md-私信看全套OD代码及解析

    ### 华为OD机试C卷 - 字符串变换最小字符串 #### 题目背景与要求 本题目属于常见的字符串处理与排序类问题,在实际的软件开发与算法设计过程中非常常见。题目要求通过对给定的字符串进行至多一次字符交换操作,使...

    JAVA的字符串拼接[参照].pdf

    然而,每次使用`+`操作符时,如果涉及到字符串常量,Java会创建一个新的字符串对象,这在循环中会引发大量的对象创建,导致性能急剧下降。 2. **String.concat(String str)**: 这是`String`类提供的一个方法,它...

    比较字符串大小

    运用到了continue、break、for循环、指针等知识,真可谓是麻雀虽小,五脏俱全。希望能帮到你!!谢谢

    字符串的字典序问题.txt

    对于两个字符串 s 和 t,如果 s 的字典序小于 t,则存在最小的 i 使得 s[i] [i](其中 0 ≤ i (|s|, |t|)),或者 s 是 t 的前缀且 s 的长度小于 t 的长度。 ##### 3. 字典序的应用场景 - **数据加密**:在设计...

    面试题,关于字符串的面试题,很详细

    问题:实现一个函数,输入一个字符串,输出该字符串的最小后继。例如,“abc”的最小后继为“abd”,“dhz”的最小后继为“di”。 思路:对最后一个字符+1,如果大于’z’则对前一个字符+1,如果又是大于 ’z’则...

Global site tag (gtag.js) - Google Analytics