首页 > 其他分享 >Study Plan For Algorithms - Part34

Study Plan For Algorithms - Part34

时间:2024-09-19 23:02:02浏览次数:9  
标签:index int stringBuilder Study Part34 length Algorithms words append

1. 二进制求和
给定两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        i = len(a) - 1
        j = len(b) - 1
        carry = 0
        result = []

        while i >= 0 or j >= 0 or carry:
            digit_a = int(a[i]) if i >= 0 else 0
            digit_b = int(b[j]) if j >= 0 else 0

            sum_digits = digit_a + digit_b + carry
            carry = sum_digits // 2
            result.append(str(sum_digits % 2))

            i -= 1
            j -= 1

        return ''.join(result[::-1])

2. 文本左右对齐
给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。

class Solution {
    public List<String> fullJustify(String[] words, int maxWidth) {
        List<String> stringList = new ArrayList<>();
        List<Integer> index = new ArrayList<>();
        int width = 0;
        int length = 0;
        StringBuilder stringBuilder;
        for (int i = 0; i < words.length; ) {
            width += words[i].length();
            length = width - words[i].length();
            if (width < maxWidth - index.size() + 1) {
                index.add(i);
                i++;
            } else {
                int nullLen = (maxWidth - length);
                stringBuilder = new StringBuilder();
                int after = (index.size() - 1) == 0? 1 : index.size() - 1;
                int[] arrs = new int[after];
                for (int j = 0; nullLen > 0; ) {
                    arrs[j]++;
                    nullLen--;
                    j = (j + 1) % arrs.length;
                }
                for (int j = 0; j < index.size(); j++) {
                    if (j!= index.size() - 1 || j == 0) {
                        stringBuilder.append(words[index.get(j)]);
                        for (int k = 0; k < arrs[j]; k++) {
                            stringBuilder.append(" ");
                        }
                    } else {
                        stringBuilder.append(words[index.get(j)]);
                    }
                }
                stringList.add(stringBuilder.toString());
                width = 0;
                index = new ArrayList<>();
            }
        }
        length = 0;
        for (Integer i : index) {
            length += words[i].length();
        }
        stringBuilder = new StringBuilder();
        for (int i = 0; i < index.size(); i++) {
            if (i == index.size() - 1) {
                stringBuilder.append(words[index.get(i)]);
            } else {
                stringBuilder.append(words[index.get(i)]).append(" ");
                length++;
            }
        }
        for (int i = 0; i < maxWidth - length; i++) {
            stringBuilder.append(" ");
        }
        stringList.add(stringBuilder.toString());
        return stringList;
    }
}

标签:index,int,stringBuilder,Study,Part34,length,Algorithms,words,append
From: https://www.cnblogs.com/stephenxiong001/p/18421550

相关文章

  • Study Plan For Algorithms - Part33
    1.和为s的两个数字输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。方法一:deftwoSum(nums,target):left=0right=len(nums)-1whileTrue:res=nums[left]+nums[right]ifres==target:......
  • phpStudy 小皮 Windows面板 存在RCE漏洞
    靶场资料后台自行领取【靶场】Phpstudy小皮面板存在RCE漏洞,通过分析和复现方式发现其实本质上是一个存储型XSS漏洞导致的RCE。通过系统登录用户名输入处的XSS配合系统后台自动添加计划任务实现RCE。这是登录成功的界面登录成功了就来和大佬们喝喝茶吧~首先在用户名登录的......
  • Study Plan For Algorithms - Part32
    1.不同路径II一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物......
  • Study Plan For Algorithms - Part30
    1.螺旋矩阵II给定一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的nxn正方形矩阵matrix。classSolution:defgenerateMatrix(self,n:int)->List[List[int]]:matrix=[[0]*nfor_inrange(n)]num=1......
  • Study Plan For Algorithms - Part31
    1.旋转链表给定一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。classListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextclassSolution:defrotateRight(self,head:Optional[ListNode],k:int)->O......
  • phpStudy下载和使用方法
    phpStudy是一个PHP调试环境的程序集成包,它集成了Apache、PHP、MySQL、phpMyAdmin等多种开发工具,为PHP开发者提供了一个快速搭建和调试PHP开发环境的解决方案。phpStudy是一款集成开发环境(IDE)软件,主要用于在Windows系统上快速搭建和调试PHP、MySQL、Apache等网页开发环境。以下是......
  • kuangStudy
    JVM探究对JVM的理解?Java8虚拟机和之前的变化什么是OOM,什么是栈溢出,怎么分析JVM的常用调优参数内存快照如何抓取,怎么分析Dump文件JVM中的类加载ProcessOn思维导图工具1.JVM的位置操作系统之上,与其他应用程序平行的地位2.JVM的体系结构详细图解网上找classfile......
  • Study Plan For Algorithms - Part28
    1.跳跃游戏题目链接:https://leetcode.cn/problems/jump-game/给定一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。classSolution:defca......
  • Study Plan For Algorithms - Part29
    1.在排序数组中查找数字统计一个数字在排序数组中出现的次数。方法一:defsearch(nums,target):returnhelper(nums,target)-helper(nums,target-1)defhelper(nums,target):i=0j=len(nums)-1whilei<=j:m=(i+j)//......
  • COMP2230/COMP6230 Algorithms
    TheUniversityofNewcastle,AustraliaSchoolofInformationandPhysicalSciencesCOMP2230/COMP6230AlgorithmsAssignment1Marks100Weight15%IndividualSubmissionviaCanvas1LearningOutcomesThisassignmentwillrequirestudentsto:Applyspecific......