|
发表于 2024-10-30 10:26:52
|
显示全部楼层
本楼为最佳答案
本帖最后由 jackz007 于 2024-10-30 12:00 编辑
试试这个代码:
- #include<stdio.h>
- int main(void)
- {
- char t , str[2][1000] ;
- int c , d[1000] , x , y , i , j , k , p ;
- fgets(str[0] , 1000 , stdin) ;
- fgets(str[1] , 1000 , stdin) ;
- for(x = 0 ; str[0][x] ; x ++) ;
- str[0][x -- - 1] = 0 ;
- for(y = 0 ; str[1][y] ; y ++) ;
- str[1][y -- - 1] = 0 ;
- for(i = 0 ; i < x ; i ++) {
- d[i] = 0 ;
- for(j = 0 ; j < y ; j ++) {
- if(str[0][i] == str[1][j]) {
- d[i] = j + 1 ;
- break ;
- }
- }
- }
- for(c = k = 0 ; k < x && ! c ; k ++) {
- for(p = 1 ; k < x && d[k] != p ; k ++) ;
- for(j = 1 , i = k + 1 ; i < x && j < y ; i ++) {
- if(d[i]) {
- if(d[i] == p + 1) {
- p ++ ;
- j ++ ;
- } else {
- break ;
- }
- }
- }
- if(j == y) {
- t = str[0][i] ;
- str[0][i] = 0 ;
- printf("%s\n" , & str[0][k]) ;
- str[0][i] = t ;
- k = i - 1 ;
- c ++ ;
- }
- }
- if(! c) printf("no match.\n") ;
- }
复制代码
编译、运行实况:
- D:\[exercise]\C>g++ -static -o x x.c
- D:\[exercise]\C>x
- dianzishejigongzuoshi
- dho
- dianzishejigo
- D:\[exercise]\C>x
- dianzishejigongzuoshi
- oi
- oshi
- D:\[exercise]\C>x
- dianzishejigongzuoshi
- io
- igo
- D:\[exercise]\C>
复制代码 |
|