Solving Leetcode Interviews in Seconds with AI: Number of Lines To Write String
Introduction
In this blog post, we will explore how to solve the LeetCode problem "806" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.
Problem Statement
You are given a string s of lowercase English letters and an array widths denoting how many pixels wide each lowercase English letter is. Specifically, widths[0] is the width of 'a', widths[1] is the width of 'b', and so on. You are trying to write s across several lines, where each line is no longer than 100 pixels. Starting at the beginning of s, write as many letters on the first line such that the total width does not exceed 100 pixels. Then, from where you stopped in s, continue writing as many letters as you can on the second line. Continue this process until you have written all of s. Return an array result of length 2 where: result[0] is the total number of lines. result[1] is the width of the last line in pixels. Example 1: Input: widths = [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10], s = "abcdefghijklmnopqrstuvwxyz" Output: [3,60] Explanation: You can write s as follows: abcdefghij // 100 pixels wide klmnopqrst // 100 pixels wide uvwxyz // 60 pixels wide There are a total of 3 lines, and the last line is 60 pixels wide. Example 2: Input: widths = [4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10], s = "bbbcccdddaaa" Output: [2,4] Explanation: You can write s as follows: bbbcccdddaa // 98 pixels wide a // 4 pixels wide There are a total of 2 lines, and the last line is 4 pixels wide. Constraints: widths.length == 26 2 <= widths[i] <= 10 1 <= s.length <= 1000 s contains only lowercase English letters.
Explanation
- Iterate through the input string
s.- Keep track of the current line's width and the number of lines. If adding the width of the next character exceeds 100, increment the line count and reset the current line width to the width of the current character.
- Return the total number of lines and the width of the last line.
- Runtime Complexity: O(n), where n is the length of the string
s. Storage Complexity: O(1).
Code
def number_of_lines(widths, s):
"""
Calculates the number of lines and the width of the last line needed to write a string,
given the widths of each letter and a maximum line width of 100.
Args:
widths (list[int]): A list of 26 integers representing the widths of each lowercase letter.
s (str): The string to be written.
Returns:
list[int]: A list of two integers: the number of lines and the width of the last line.
"""
lines = 1
current_width = 0
for char in s:
width = widths[ord(char) - ord('a')]
if current_width + width <= 100:
current_width += width
else:
lines += 1
current_width = width
return [lines, current_width]