Lexicographical Rank of String-Naive Approach

ZeeshanAli-0704 - Aug 15 '22 - - Dev Community
let a = "DCBA";
let actualStrInArray = a.split("");
let sortedStrInArray = a.split("").sort();
let rank = 0;

for (let i = 0; i < actualStrInArray?.length; i++) {
  let elem = actualStrInArray[i];
  let indexOfElementInSorted = sortedStrInArray.indexOf(elem);
  if (indexOfElementInSorted > 0) {
    let getCount =
      indexOfElementInSorted * factorial(sortedStrInArray.length - 1);
    rank = rank + getCount;
    sortedStrInArray.splice(indexOfElementInSorted, 1);
  } else {
    rank = rank + 1;
  }
}
console.log(rank);
Enter fullscreen mode Exit fullscreen mode
function factorial(n) {
  let answer = 1;
  if (n == 0 || n == 1) {
    return answer;
  } else {
    for (var i = n; i >= 1; i--) {
      answer = answer * i;
    }
    return answer;
  }
}
Enter fullscreen mode Exit fullscreen mode
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player