Dos formas de resolver el problema de las cuerdas giratorias

Cuarto, gira la cuerda.

4.1 Requisitos para el título

Dadas dos cadenas, s y objetivo. Devuelve verdadero si s puede convertirse en objetivo después de varias operaciones de rotación. La operación de rotación de s es mover el carácter más a la izquierda de s hacia la derecha.

例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea' 。

示例 1:

输入: s = "abcde", goal = "cdeab"
输出: true

示例 2:

输入: s = "abcde", goal = "abced"
输出: false

提示:

1 <= s.length, goal.length <= 100
s 和 goal 由小写英文字母组成

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/rotate-string

4.2, ideas para resolver problemas

el primer método:

Primero determine si las longitudes de las dos cadenas son iguales y luego use la función contains() para comparar las dos cadenas.
  El método contains() devuelve verdadero si y solo si esta cadena contiene la secuencia especificada de valores de caracteres.

El segundo método:

​ Primero determine si las longitudes de las dos cadenas son iguales y compare las diversas subcadenas de la cadena s con el objetivo a través de un bucle, usando el método charAt(int index).
El método charAt(int index) es un método que se puede usar para recuperar la instancia de String del carácter en un índice específico, y el método charAt() devuelve el valor char en la posición de índice especificada.
​​ El método charAt(int index) devuelve el carácter en el índice, y el rango de valores del índice es [0, s.length-1].

4.3 Algoritmos

el primer método:

class Solution {
    
    
    public boolean rotateString(String s, String goal) {
    
    
        //第一种方法
        //先判断两个字符串的长度是否相等,再使用contains()函数将两个字符串进行比较
        //contains()方法返回true,当且仅当此字符串包含指定的char值序列
        //如果此字符串包含,此方法返回true,否则返回false。
        return s.length() == goal.length() && (s + s).contains(goal);
}

El segundo método:

class Solution {
    
    
    public boolean rotateString(String s, String goal) {
    
    
        //第二种方法
        int n = s.length();
        int m = goal.length();
        //先判断两个字符串的长度是否相等,如果不相等,那就没有比较的必要了
        if(n != m){
    
    
            return false;
        }
        //通过循环将字符串s的各种子字符串与goal进行比较
        for(int i = 0;i < m;i++){
    
    
            boolean a = true;
            for(int j = 0;j < m;j++){
    
    
                if(s.charAt((i+j)%m) != goal.charAt(j)){
    
    
                    a = false;
                    break;
                }
            }
            if(a){
    
    
                return true;
            }
        }
        return false;
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_52916408/article/details/124051191
Recomendado
Clasificación