Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 从字符串的末尾剪下m和n个字母,然后找出圈数以返回原始字符串_String_Cut_Letter - Fatal编程技术网

String 从字符串的末尾剪下m和n个字母,然后找出圈数以返回原始字符串

String 从字符串的末尾剪下m和n个字母,然后找出圈数以返回原始字符串,string,cut,letter,String,Cut,Letter,问题:给定的是一个字符串以及m和n 输入1:原始字符串 输入2:m(小于字符串长度):从字符串的末尾剪切m个字母,然后添加到字符串的开头 输入3:n(小于字符串长度):从上述步骤获得的字符串末尾剪切n个字母,然后添加到该字符串的开头 此过程将继续,需要找出返回原始字符串所需的圈数 def harry(str,m,n): le=len(str) org=str.upper() str=str.upper() 转动=0 对于str中的i: str3=str[-m:]#最后n个字母 str=str.r

问题:给定的是一个字符串以及m和n

输入1:原始字符串

输入2:m(小于字符串长度):从字符串的末尾剪切m个字母,然后添加到字符串的开头

输入3:n(小于字符串长度):从上述步骤获得的字符串末尾剪切n个字母,然后添加到该字符串的开头

此过程将继续,需要找出返回原始字符串所需的圈数

def harry(str,m,n):
le=len(str)
org=str.upper()
str=str.upper()
转动=0
对于str中的i:
str3=str[-m:]#最后n个字母
str=str.replace('',)[:-m]
str=str3+str
打印(str)
如果组织!=str:
转弯=转弯+1
str4=str[-n:]
str=str.replace('',)[:-n]
str=str4+str
打印(str)
转弯=转弯+1
如果org==str:
打破
打印(转)
str=输入(“输入字符串”)
m=int(输入(“输入m的值”))
n=int(输入(“输入n的值”))
哈里(北、南、北大街)
获得的产出:

Enter the stringarya
Enter the value of m1
Enter the value of n2
AARY
RYAA
ARYA
2
要获得的原始输出:

3 
(返回原始字符串Arya需要3次循环。)

除了这样的单词,我得到了所有单词的输出,特别是当同一个字母连续出现时。
请帮我解决这个问题。

事实上,你至少要走一步,看看它们是否相等。所以你的回合应该从1开始

见:

def harry(str,m,n):
le=len(str)
org=str.upper()
str=str.upper()
turn=1#
word=input()
m=int(输入())
n=int(输入())
计数=1
单词2=单词[-1*m::]+单词[:len(单词)-m]
#打印(“以开始”,word2)
while(word!=word2):
如果(计数%2!=0):
word2=word2[-1*n::+word2[:len(word2)-n]
其他:
word2=word2[-1*m:][word2[:len(word2)-m]
#打印(“现在字符串”,word2)
计数+=1
打印(计数)

我的方法不同。假设s、n和m是输入长度,我们必须从字符串s的末尾开始剪切,然后将其添加到开头

说明:假设字符串s是“bcdefghijklmnop”,n和m是2和3。切割2个长度字符串后:opbcdefghijklmn在切割3个长度lmnopbcdefghijk后,此过程继续,直到形成原始字符串

以上部分我们都知道

结论:字符串的长度必须可以被n+m(或*)整除,因为您可以看到 它正在形成这样的系列 n+m+n+m+n+m++ 所以它要么以n结尾,要么以m结尾

  • (如果以m结尾,则字符串的长度(n+m)==0)。-->(n+m)*k

    答案-->(字符串的长度/(n+m))*2
    2在这里是相乘的,因为它包括n和m

    否则

  • *(字符串%(n+m)=n的长度(如果以n结尾)-->(n+m)*k+n

    答案-->(字符串的长度/(n+m))*2+1

    n额外增加1

  • 这是我的代码:

    ls = len(input())
    n=int(input())
    m=int(input())
    x=n+m
    if(ls%x==0):
        print(ls//x<<1)
    elif(ls%x==n):
        print((ls//x<<1)+1)
    
    ls=len(输入())
    n=int(输入())
    m=int(输入())
    x=n+m
    如果(ls%x==0):
    打印(ls//x
    #包括
    使用名称空间std;
    int findmin(字符串s,int m,int n){
    int len=s.length();
    整数计数=1;
    字符串q=s.substr(len-m,m)+s.substr(0,len-m);
    int-cut=n;
    while(q!=s){
    q=q.substr(透镜切割,切割)+q.substr(0,透镜切割);
    如果(切割=m){
    切割=n;
    }
    否则{
    切割=m;
    }
    计数++;
    }
    返回计数;
    }
    int main(){
    int t;
    cin>>t;
    而(t--){
    字符串s;
    cin>>s;
    int m,n;
    cin>>m>>n;
    
    你能给出失败的地方吗?在第二次迭代中,当原始字符串arya在str中获得时,如果条件不增加回合数,则直接进入第二个条件,即回合数仅为2,因为条件在第二次迭代中变为真。(在第9步中,当str=arya在2次迭代后获得时,它不计算相同的次数)。如果不增加回合数,则会跳到打印回合数。希望您清楚。我认为for循环条件不正确。问题在于分配和增加回合值。如果有帮助,请始终通过接受答案来结束您的问题:)。请在答案中添加注释以解释您的想法
    ls = len(input())
    n=int(input())
    m=int(input())
    x=n+m
    if(ls%x==0):
        print(ls//x<<1)
    elif(ls%x==n):
        print((ls//x<<1)+1)
    
    #include<bits/stdc++.h>
    
    using namespace std;
    
    int findmin(string s ,int m, int n){
        
        int len=s.length();
        int count=1;
        string q=s.substr(len-m,m)+s.substr(0,len-m);
        int cut=n;
        while(q!=s){
            q=q.substr(len-cut,cut)+q.substr(0,len-cut);
            if(cut==m){
                cut=n;
            }
            else{
                cut=m;
            }
            count++;
        }
        return count;
    }
    
    int main() {
        int t;
        cin>>t;
        while(t--){
            string s;
            cin>>s;
            int m,n;
            cin>>m>>n;
            cout<<findmin(s,m,n)<<"\n";
        }
    }