Skip to content

Commit 44a0397

Browse files
committed
Add new solutions
1 parent acfd1e5 commit 44a0397

File tree

5 files changed

+264
-0
lines changed

5 files changed

+264
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#
2+
# @lc app=leetcode.cn id=1963 lang=ruby
3+
# @lcpr version=30204
4+
#
5+
# [1963] 使字符串平衡的最小交换次数
6+
#
7+
8+
9+
# @lcpr-template-start
10+
11+
# @lcpr-template-end
12+
# @lc code=start
13+
# @param {String} s
14+
# @return {Integer}
15+
def min_swaps(s)
16+
count = 0
17+
left = 0
18+
right = s.length - 1
19+
left_stack = []
20+
right_stack = []
21+
while left < right
22+
if s[left] == '['
23+
left_stack.push(s[left])
24+
left += 1
25+
next
26+
end
27+
28+
if s[left] == ']' && left_stack.last == '['
29+
left_stack.pop
30+
left += 1
31+
next
32+
end
33+
34+
if s[right] == ']'
35+
right_stack.push(s[right])
36+
right -= 1
37+
next
38+
end
39+
40+
if s[right] == '[' && right_stack.last == ']'
41+
right_stack.pop
42+
right -= 1
43+
next
44+
end
45+
46+
s[left], s[right] = s[right], s[left]
47+
count += 1
48+
end
49+
50+
count
51+
end
52+
# @lc code=end
53+
54+
55+
56+
#
57+
# @lcpr case=start
58+
# "][]["\n
59+
# @lcpr case=end
60+
61+
# @lcpr case=start
62+
# "]]][[["\n
63+
# @lcpr case=end
64+
65+
# @lcpr case=start
66+
# "[]"\n
67+
# @lcpr case=end
68+
69+
# @lcpr case=start
70+
# "[]][[[]]]]][[[[]]]]]]]]][[[[[[[["\n
71+
# @lcpr case=end
72+
#
73+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#
2+
# @lc app=leetcode.cn id=2269 lang=ruby
3+
# @lcpr version=30204
4+
#
5+
# [2269] 找到一个数字的 K 美丽值
6+
#
7+
8+
9+
# @lcpr-template-start
10+
11+
# @lcpr-template-end
12+
# @lc code=start
13+
# @param {Integer} num
14+
# @param {Integer} k
15+
# @return {Integer}
16+
def divisor_substrings(num, k)
17+
count = 0
18+
digits = Math.log10(num).to_i + 1
19+
(0..digits - k).each do |i|
20+
pre_divisor = 10**(digits - i)
21+
suf_divisor = 10**(digits - k - i)
22+
23+
divisor = (num % pre_divisor) / suf_divisor
24+
next if divisor.zero?
25+
26+
count += 1 if num % divisor == 0
27+
end
28+
29+
count
30+
end
31+
# @lc code=end
32+
33+
34+
35+
#
36+
# @lcpr case=start
37+
# 240\n2\n
38+
# @lcpr case=end
39+
40+
# @lcpr case=start
41+
# 430043\n2\n
42+
# @lcpr case=end
43+
44+
# @lcpr case=start
45+
# 12211213\n1\n
46+
# @lcpr case=end
47+
48+
# @lcpr case=start
49+
# 12211213\n5\n
50+
# @lcpr case=end
51+
52+
# @lcpr case=start
53+
# 10\n1\n
54+
# @lcpr case=end
55+
56+
# @lcpr case=start
57+
# 100000\n2\n
58+
# @lcpr case=end
59+
60+
#
61+

2614.prime-in-diagonal/default.rb

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#
2+
# @lc app=leetcode.cn id=2614 lang=ruby
3+
# @lcpr version=30204
4+
#
5+
# [2614] 对角线上的质数
6+
#
7+
8+
9+
# @lcpr-template-start
10+
11+
# @lcpr-template-end
12+
# @lc code=start
13+
# @param {Integer[][]} nums
14+
# @return {Integer}
15+
def diagonal_prime(nums)
16+
max = 0
17+
(0...nums.length).each do |i|
18+
max = [max, nums[i][i]].max if prime?(nums[i][i])
19+
max = [max, nums[i][nums.length - 1 - i]].max if prime?(nums[i][nums.length - 1 - i])
20+
end
21+
max
22+
end
23+
24+
def prime?(num)
25+
return false if num < 2
26+
return true if num < 4
27+
28+
(2..Math.sqrt(num).to_i).each do |i|
29+
return false if num % i == 0
30+
end
31+
32+
true
33+
end
34+
# @lc code=end
35+
36+
37+
38+
#
39+
# @lcpr case=start
40+
# [[1,2,3],[5,6,7],[9,10,11]]\n
41+
# @lcpr case=end
42+
43+
# @lcpr case=start
44+
# [[1,2,3],[5,17,7],[9,11,10]]\n
45+
# @lcpr case=end
46+
47+
#
48+

3110.score-of-a-string/default.rb

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#
2+
# @lc app=leetcode.cn id=3110 lang=ruby
3+
# @lcpr version=30204
4+
#
5+
# [3110] 字符串的分数
6+
#
7+
8+
9+
# @lcpr-template-start
10+
11+
# @lcpr-template-end
12+
# @lc code=start
13+
# @param {String} s
14+
# @return {Integer}
15+
def score_of_string(s)
16+
score = 0
17+
(0...s.length - 1).each do |i|
18+
score += (s[i].ord - s[i + 1].ord).abs
19+
end
20+
21+
score
22+
end
23+
# @lc code=end
24+
25+
26+
27+
#
28+
# @lcpr case=start
29+
# "hello"\n
30+
# @lcpr case=end
31+
32+
# @lcpr case=start
33+
# "zaz"\n
34+
# @lcpr case=end
35+
36+
# @lcpr case=start
37+
# "aa"\n
38+
# @lcpr case=end
39+
40+
# @lcpr case=start
41+
# "aabaccjlkdjfaosidfujadflsadjflksjaflkfjlkafsfalskkcxvhiudfytwe"\n
42+
# @lcpr case=end
43+
44+
#
45+

3340.check-balanced-string/default.rb

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#
2+
# @lc app=leetcode.cn id=3340 lang=ruby
3+
# @lcpr version=30204
4+
#
5+
# [3340] 检查平衡字符串
6+
#
7+
8+
9+
# @lcpr-template-start
10+
11+
# @lcpr-template-end
12+
# @lc code=start
13+
# @param {String} num
14+
# @return {Boolean}
15+
def is_balanced(num)
16+
odd_sum = 0
17+
even_sum = 0
18+
(0...num.length).each do |i|
19+
i % 2 == 0 ? even_sum += num[i].to_i : odd_sum += num[i].to_i
20+
end
21+
odd_sum == even_sum
22+
end
23+
# @lc code=end
24+
25+
26+
27+
#
28+
# @lcpr case=start
29+
# "1234"\n
30+
# @lcpr case=end
31+
32+
# @lcpr case=start
33+
# "24123"\n
34+
# @lcpr case=end
35+
36+
#
37+

0 commit comments

Comments
 (0)