溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

兩種方法判斷一個字符串是否為另外一個字符串旋轉(zhuǎn)之后的字符串。(C語言)

發(fā)布時間:2020-05-15 11:34:12 來源:網(wǎng)絡(luò) 閱讀:455 作者:夢T醒 欄目:編程語言

例如:給定s1 = AABCD和s2 = BCDAA,返回1
給定s1 = abcd和s2 = ACBD,返回0.

AABCD左旋一個字符得到ABCDA
AABCD左旋兩個字符得到BCDAA

第一種:通過其中一個字符串向左移動確定第二個字符串

#include<stdio.h>
#include<string.h>

void left_move(char *str, int k)
{
    while (k != 0)
    {
        char *cur = str;//必須需要另一個指針存儲首地址
        char tmp=*cur;
        while ((*(cur+1)) != '\0')
        {
            *cur = *(cur + 1);
            cur++;
        }
        *(cur) = tmp;
        k--;
    }
}
int Judge_string(char *str, const char *p)//判斷函數(shù)
{
    int i;
    if (strlen(str) != strlen(p))
    {
        return 0;
    }
    for (i = 1; i <= strlen(str); i++)
    {
        left_move(str,1);
        if (strcmp(str, p)==0)//strcmp函數(shù)判斷str字符串是否與p字符串相同
        {
            return 1;
        }
    }
    return 0;
}
int main()
{
    char str[] = "abcd";
    char str1[] = "cdab";
    int ret = Judge_string(str, str1);
    if (0 == ret)
    {
        printf("str1不是str旋轉(zhuǎn)后得到的!\n");
    }
    else
    {
        printf("str1是str旋轉(zhuǎn)后得到的!\n");
    }
    system("pause");
    return 0;
}

第二種:通過拼接字符串,然后再字符串中找另一個字符串(strstr函數(shù))

#include<stdio.h>
#include<string.h>

int Judge_string(char *str, char *p)
{
    if (strlen(str) != strlen(p))
    {
        return 0;
    }
    //拼接字符串,strncat(a,b,n)把b字符串中的n個元素拼接給a字符串,
    //所得字符串名字為a
    strncat(str, str, strlen(str));
    printf("%s",str);
    //strstr(a,b)判斷a中是否含有b字符串,沒有returnNULL,
    //有return  a字符串中遇到b字符串之后所有字符
    //例如:a:abcdefgh     b:def      return  defgh
    if (strstr(str, p) == NULL)
    {
        return 0;
    }
    else
    {
        return 1;
    }

}
int main()
{
    char str[20] = "abcd";//數(shù)組必須要足夠大
    char str1[] = "bcde";
    int ret = Judge_string(str, str1);
    if (0 == ret)
    {
        printf("str1不是str旋轉(zhuǎn)后得到的!\n");
    }
    else
    {
        printf("str1是str旋轉(zhuǎn)后得到的!\n");
    }
    system("pause");
    return 0;
}
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI