DEV Community

Nw3965
Nw3965

Posted on

Character code

There was a hint how to solve this coding test so I checked this site and find that I need to lower all of alphabet so I used s1.lower.

def isFirstStringLarger(s1,s2):
    S1 = s1.lower  
    S2 = s2.lower  

    F1= S1.encode
    F2= S2.encode

    X = F1+F2

    if F1 > F2:
        return True
    else:
        return False
Enter fullscreen mode Exit fullscreen mode

When I test that code the result was this.

Traceback (most recent call last):
  File "script.py", line 17, in <module>
    print("case0" + str(('true' if (isFirstStringLarger("enim","sequi") == True) else 'false')) + "case0")
  File "script.py", line 6, in isFirstStringLarger
    F1= S1.encode
AttributeError: 'builtin_function_or_method' object has no attribute 'encode'
Enter fullscreen mode Exit fullscreen mode

I cannot use .encode so I need to find another way to encode the alphabet to ASCII and found that I should write like this.
encode()

Copilot code.

def isFirstStringLarger(s1, s2):
    # Convert both strings to lowercase
    S1 = s1.lower()
    S2 = s2.lower()

    # Compare the encoded byte strings
    F1 = S1.encode()
    F2 = S2.encode()

    if F1 > F2:
        return True
    else:
        return False

Enter fullscreen mode Exit fullscreen mode

After testing the code above, I could not pass this test case.
isFirstStringLarger("Appearances may deceive","I think so too")

After checking the code I got this from AI.

def isFirstStringLarger(s1, s2):
    s1 = s1.lower()
    s2 = s2.lower()

    # Calculate the sum of ASCII values for each string
    sum1 = sum([ord(c) for c in s1])
    sum2 = sum([ord(c) for c in s2])

    # Compare the two sums
    if sum1 > sum2:
        return True
    else:
        return False

Enter fullscreen mode Exit fullscreen mode

I wanted to know the difference between first one and second one.

The isFirstStringLarger and isFirstLarger functions are both designed to compare two strings and return True if the first string is lexicographically larger than the second string, and False otherwise. However, they use different methods to make the comparison.
The isFirstStringLarger function converts both strings to lowercase, encodes them as byte strings, and then compares the byte strings using the > operator. This method works because the > operator compares the byte values of the two strings in lexicographic order.
The isFirstLarger function also converts both strings to lowercase, but then calculates the sum of the ASCII values for each string using a list comprehension and the ord function. It then compares the two sums using the > operator. This method works because the ASCII values of the characters in a string are ordered in the same way as the characters themselves.
Both methods are valid ways to compare two strings lexicographically, but the isFirstStringLarger method is more concise and efficient because it avoids the need to create a list of ASCII values for each string.

Seems like isFirstStringLarger method has built-in ASCII conversion function so no need to encode.

Top comments (0)