g2801_2900.s2851_string_transformation.readme.md Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
2851\. String Transformation
Hard
You are given two strings `s` and `t` of equal length `n`. You can perform the following operation on the string `s`:
* Remove a **suffix** of `s` of length `l` where `0 < l < n` and append it at the start of `s`.
For example, let `s = 'abcd'` then in one operation you can remove the suffix `'cd'` and append it in front of `s` making `s = 'cdab'`.
You are also given an integer `k`. Return _the number of ways in which_ `s` _can be transformed into_ `t` _in **exactly**_ `k` _operations._
Since the answer can be large, return it **modulo** 109 + 7
.
**Example 1:**
**Input:** s = "abcd", t = "cdab", k = 2
**Output:** 2
**Explanation:**
First way:
In first operation, choose suffix from index = 3, so resulting s = "dabc".
In second operation, choose suffix from index = 3, so resulting s = "cdab".
Second way:
In first operation, choose suffix from index = 1, so resulting s = "bcda".
In second operation, choose suffix from index = 1, so resulting s = "cdab".
**Example 2:**
**Input:** s = "ababab", t = "ababab", k = 1
**Output:** 2
**Explanation:**
First way:
Choose suffix from index = 2, so resulting s = "ababab".
Second way:
Choose suffix from index = 4, so resulting s = "ababab".
**Constraints:**
* 2 <= s.length <= 5 * 105
* 1 <= k <= 1015
* `s.length == t.length`
* `s` and `t` consist of only lowercase English alphabets.