It seems that coding tests are conducted overseas in interviews with engineers, and in many cases, the main thing is to implement specific functions and classes according to the theme.
As a countermeasure, it seems that a site called Let Code will take measures.
A site that trains algorithmic power that can withstand coding tests that are often done in the home.
I think it's better to have the algorithm power of a human being, so I'll solve the problem irregularly and write down the method I thought at that time as a memo.
Basically, I would like to solve the easy acceptance in descending order.
Last time Leet Code Day1 Starting from Zero "1389. Create Target Array in the Given Order"
Input: address = "1.1.1.1" Output: "1[.]1[.]1[.]1"
Input: address = "255.100.50.0" Output: "255[.]100[.]50[.]0"
Simply replace the. In the given IP address with [.].
class Solution:
def defangIPaddr(self, address: str) -> str:
address = address.replace('.','[.]')
return address
# Runtime: 24 ms, faster than 88.37% of Python3 online submissions for Defanging an IP Address.
# Memory Usage: 14 MB, less than 100.00% of Python3 online submissions for Defanging an IP Address.
Just use replace () and you're done!
I was thinking, but isn't it faster to return directly without assigning to address in the first place? I think, and rewrite it.
class Solution:
def defangIPaddr(self, address: str) -> str:
return address.replace('.','[.]')
# Runtime: 24 ms, faster than 88.37% of Python3 online submissions for Defanging an IP Address.
# Memory Usage: 13.7 MB, less than 100.00% of Python3 online submissions for Defanging an IP Address.
It only used a little less memory.
If you take a quick look at Discuss, this is another major one.
Use the split function to assign it to the list, and then use the join function to insert '[.]'
Between the numbers.
class Solution:
def defangIPaddr(self, address: str) -> str:
return "[.]".join(address.split("."))
# Runtime: 28 ms, faster than 65.40% of Python3 online submissions for Defanging an IP Address.
# Memory Usage: 13.7 MB, less than 100.00% of Python3 online submissions for Defanging an IP Address.
By the way, the split function and join function have the following specifications.
str.split(sep=None, maxsplit=-1) Returns a list of words separated by a string sep as a delimiter string. If maxsplit is given, it will be split up to maxsplit times (that is, the list will be up to maxsplit + 1 elements). If maxsplit is not given or -1, there is no limit to the number of splits (split as much as possible). If sep is given, consecutive delimiters are not grouped and are considered to separate empty strings (eg '1,, 2'.split (',') is ['1',' ', '2'] is returned). The sep argument can be multiple characters (for example, '1 <> 2 <> 3'.split ('<>') returns ['1', '2', '3']). Splitting an empty string with a delimiter returns ['']. For example:
'1,2,3'.split(',')
['1', '2', '3']
'1,2,3'.split(',', maxsplit=1)
['1', '2,3']
'1,2,,3,'.split(',')
['1', '2', '', '3', '']
If> sep is not specified or None, a different split algorithm is applied. Consecutive whitespace characters are considered as one delimiter. Also, even if there are spaces at the beginning or end of the string, the empty string is not included at the beginning or end of the result. Therefore, if you divide an empty string or a string with only spaces by the None delimiter, [] is returned. For example:
'1 2 3'.split()
['1', '2', '3']
'1 2 3'.split(maxsplit=1)
['1', '2 3']
' 1 2 3 '.split()
['1', '2', '3']
str.join(iterable) Returns a string that is a concatenation of the strings in iterable. If iterable has a non-string value such as a bytes object, a TypeError will be thrown. The separator between the elements is the string that provides this method.
I think it's good to learn while using small functions, but when it comes to this problem, I think it's simpler and easier to understand using the replace function.
Recommended Posts