[Título série diária] maior fator comum LeetCode 1071. cordas

título

Para strings S e T, apenas a S = T + ... + T tempo (T ligado a si próprio uma ou mais vezes), identificamos "T S pode ser divisível."
Retorna a mais longa seqüência de X, X pode cumprir as exigências, e X pode ser divisível str2 str1 divisível.

Fonte: botão estadia (LeetCode)
estão protegidas por copyright dedução de todas as redes. reimpressão comercial entre em contato com a reimpressão autorizado oficial, não-comercial por favor, indicar a fonte.

solução do problema

Em primeiro lugar, partindo do princípio que um duas cadeias são feitos (e para cima) X subcadeia gerado, então é fácil de pensar de cordas S e T são sequências de repetição de X, então s = k th X, T n = Xa, o S + T == T + == S (k + n) th X
, em seguida, se S + T == T + S, em seguida, uma solução, ou cadeia vazia é retornada directamente indica que não há solução.

S e T são, em seguida, múltiplos de X, X é o comprimento máximo da sua maior divisor comum (o assunto escrito)

código

public class Solution {
  public String gcdOfStrings(String str1, String str2) {
      if ((str1+str2).equals(str2+str1))
          return str1.substring(0,GCD(str1.length(),str2.length()));
      else
          return "";
  }
  public int GCD(int a,int b)
  {
      if(a==0) return b;
      if(b==0) return a;
      if(!(a%2==1)&&!(b%2==1))
      {
          return GCD(a>>1,b>>1)<<1;
      }
      else if(!(b%2==1))
      {
          return GCD(a,b>>1);
      }
      else if(!(a%2==1))
      {
          return GCD(a>>1,b);
      }
      else
      {
          return GCD(Math.abs(a-b),Math.min(a,b));
      }
  }
}

Acho que você gosta

Origin www.cnblogs.com/JethroYu/p/12467001.html
Recomendado
Clasificación