def reverse_alternating_groups(s): result = [] # List to store the final result group = "" # Temporary string to hold each group (either digits or letters) reverse = False # Flag to indicate whether to reverse the group for i in range(len(s)): if s[i].isalpha(): # Add character to the current group of letters group += s[i] else: # If we encounter a non-letter (digit), process the current group if group: # Reverse the group if needed and append it to the result if reverse: result.append(group[::-1]) # Reverse the letters group else: result.append(group) # Leave the letters group as it is group = "" # Reset the group for the next set of characters # Append the digit to the result (digits are unchanged) result.append(s[i]) # Toggle the reverse flag for the next group of letters reverse = not reverse # Process any remaining group (in case the string ends with letters) if group: if reverse: result.append(group[::-1]) # Reverse the last letters group if needed else: result.append(group) # Return the result as a joined string return ''.join(result) # Example usage: input_str_1 = "abc123def456ghi789jkl" output_str_1 = reverse_alternating_groups(input_str_1) print(output_str_1) # Output: "cba123def456ihg789jkl" input_str_2 = "a1b2c3d" output_str_2 = reverse_alternating_groups(input_str_2) print(output_str_2) # Output: "a1b2c3d"
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter