字串的先后顺序

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <string>
 5 #include <stdlib.h>
 6 using namespace std;
 7
 8 int main(int argc, char * argv[])
 9 {
10     char mn[10000] = {0};
11     char first[100] = {0};
12     char second[100] = {0};
13     while (scanf("%s", mn) != EOF) {
14         getchar();
15         string str(mn);
16         int i;
17         scanf("%s", first);
18         getchar();
19         string fstr(first);
20         scanf("%s", second);
21         getchar();
22         string sstr(second);
23
24         int idxf = str.find(fstr, 0);
25         int idxfr = str.rfind(fstr);
26         int idxs = str.find(sstr, 0);
27         //int idxsr = str.find(sstr, 0);
28         if((idxf == string::npos) || (idxs == string::npos)){
29             cout << "invalid" << endl;
30         }
31
32         if((idxfr > idxf) && (idxf < idxs) && (idxfr > idxs)){
33             cout << "both" << endl;
34         }
35
36         if (idxfr == idxf)
37             if(idxf < idxs){
38                 cout << "forward" << endl;
39             }else if(idxf > idxs){
40                 cout << "backward" << endl;
41             }
42
43
44     }
45     return 0;
46 }

eg:
input:
atob
a
b
output:
forwad

aacacaa
cac
aa
output:
both

时间: 2024-08-11 15:09:48

字串的先后顺序的相关文章

蓝桥杯 基础练习 01字串 【暴力解决】

基础练习 01字串 时间限制:1.0s   内存限制:256.0MB 问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能.它们的前几个是: 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串. 输入格式 本试题没有输入. 输出格式 输出32行,按从小到大的顺序每行一个长度为5的01串. 样例输出 00000 00001 00010 00011 <以下部分省略> #include<stdio.h> int mai

1793 良序字串

1793 良序字串 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description ‘DOS’被称为良序字串,因为它之中的字母是按ASCII码的顺序排列的,而‘DATE’则不是良序字串. 现要求给出一个N*N的字母方阵,从中选出给定长度M的良序字串. 注明:良序字串的每个字母必须在同一行中连续. 输入描述 Input Description 第一行为N,M 接下来N行为N*N 的方阵 输出描述 Output Descri

【编程题目】最长公共字串

56.最长公共字串(算法.字符串).题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串.注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中.请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串.例如:输入两个字符串 BDCABA 和 ABCBDAB,字符串 BCBA 和 BDAB 都是是它们的最长公共子串,则输出它们的长度 4,并打印任意一个子串. 经典动态规划题. #include <stdio.h> #i

hdu1298 T9(手机输入法,每按一个数字,找出出现频率最高的字串,字典树+DFS)

Problem Description A while ago it was quite cumbersome to create a message for the Short Message Service (SMS) on a mobile phone. This was because you only have nine keys and the alphabet has more than nine letters, so most characters could only be

lqb 基础练习 01字串 (itoa)

基础练习 01字串 时间限制:1.0s   内存限制:256.0MB 问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能.它们的前几个是: 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串. 输入格式 本试题没有输入. 输出格式 输出32行,按从小到大的顺序每行一个长度为5的01串. 样例输出 00000 00001 00010 00011 <以下部分省略> 分析: 可以通过itoa(int n, char *, int

Leetcode——30.与所有单词相关联的字串【##】

@author: ZZQ @software: PyCharm @file: leetcode30_findSubstring.py @time: 2018/11/20 19:14 题目要求: 给定一个字符串 s 和一些长度相同的单词 words.在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置. 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序. 示例 1: 输入: s = "barfoothefoobarman&qu

最长公共子序列与最长公共字串

显然最长公共子序列不一定需要连续的,只要字符的顺序严格递增即可.最长公共字串需要字符连续 子序列代码: package test; import java.util.*; /* * 本题是求最长公共子序列,子序列未必连续,只需要严格递增即可 * 如 abcdeeeeeeeee和atttbggcd 最长公共子序列为abcd 长度为4 * * */ public class Main4{ public static void main(String... args){ try(Scanner in

NOIP2002 字串变换

题二 字串变换 (存盘名: NOIPG2) [问题描述]: 已知有两个字串 A$, B$ 及一组字串变换的规则(至多6个规则): A1$ -> B1$ A2$ -> B2$ 规则的含义为:在 A$中的子串 A1$ 可以变换为 B1$.A2$ 可以变换为 B2$ …. 例如:A$='abcd' B$='xyz' 变换规则为: ‘abc’->‘xu’ ‘ud’->‘y’ ‘y’->‘yz’ 则此时,A$ 可以经过一系列的变换变为 B$,其变换的过程为: ‘abcd’->‘x

hdu 4333 扩展kmp+kmp重复字串去重

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4333 关于kmp next数组求最短重复字串问题请看:http://www.cnblogs.com/z1141000271/p/7406198.html 扩展kmp请看:http://www.cnblogs.com/z1141000271/p/7404717.html 题目大意:一个数字,依次将第一位放到最后一位,问小于本身的数的个数及等于本身的个数和大于本身的个数,但是要注意重复的不再计算 题解: