Class Solution

  • All Implemented Interfaces:

    
    public final class Solution
    
                        

    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 <code>10<sup>9</sup> + 7</code>.

    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:

    • <code>2 <= s.length <= 5 * 10<sup>5</sup></code>

    • <code>1 <= k <= 10<sup>15</sup></code>

    • s.length == t.length

    • s and t consist of only lowercase English alphabets.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Field Summary

      Fields 
      Modifier and Type Field Description
    • Constructor Summary

      Constructors 
      Constructor Description
      Solution()
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      final Integer numberOfWays(String s, String t, Long k)
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait