LeetCode //C - 796. Rotate String

796. Rotate String

Given two strings s and goal, return true if and only if s can become goal after some number of shifts on s.

A shift on s consists of moving the leftmost character of s to the rightmost position.

  • For example, if s = “abcde”, then it will be “bcdea” after one shift.
     
Example 1:

Input: s = “abcde”, goal = “cdeab”
Output: true

Example 2:

Input: s = “abcde”, goal = “abced”
Output: false

Constraints:
  • 1 <= s.length, goal.length <= 100
  • s and goal consist of lowercase English letters.

From: LeetCode
Link: 796. Rotate String


Solution:

Ideas:
  • If two strings s and goal are of different lengths, return false immediately.

  • If we concatenate s with itself (e.g., “abcde” + “abcde” = “abcdeabcde”), then all possible rotations of s will appear as substrings of this concatenated string.

  • Therefore, if goal is a substring of s + s, then it is a valid rotation of s.

Code:
bool rotateString(char* s, char* goal) {
    int len_s = strlen(s);
    int len_g = strlen(goal);
    
    if (len_s != len_g) return false;

    // Allocate space for concatenated string
    char double_s[201]; // 2*100 + 1 (for null terminator)
    strcpy(double_s, s);
    strcat(double_s, s);

    return strstr(double_s, goal) != NULL;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Navigator_Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值