String str[]={"-123","89","-10","456"};
str
é uma matriz de cadeias, com cada cadeia no formato de um número inteiro, e você deve executar a classificação nessa matriz noO(n log n)
tempo.As cadeias em
str
podem representar números inteiros positivos e negativos. O comprimento máximo dessas seqüências é 1024 caracteres.
Eu sei que uma solução desse problema é converter as seqüências de caracteres em números e compará-las além disso; existe alguma outra solução para esse problema?
Respostas:
Outra solução é implementar sua própria função de comparação:
-
, a sequência que começa com-
é o número menor.-
, compare o comprimento das strings. A cadeia mais longa é o número menor. Se as duas seqüências tiverem o mesmo comprimento, faça uma comparação padrão, mas negue o resultado.fonte
"-0"
), se existirem, iria ficar ordenado na frente do que os normais, mas que parece-me muito bem ...find_first_not_of("0")
e passe-os paracompare()
sobrecarregar, o que pede pos / len para os dois lados da comparação.Aqui está um exemplo mínimo e potencialmente insuficiente (não lida com zeros à esquerda, espaços em branco etc.) que faz o que você deseja.
Os comentários explicam o que estão fazendo. :)
fonte
!=
vez de^
ter o mesmo resultado para booleanos, mas o resultado já é booleano, novamente tornando a conversão explícita obsoleta (e adicionalmente os parênteses ...).less_as_number
?).