<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: vishal.codes</title>
    <description>The latest articles on DEV Community by vishal.codes (@vishalmx3).</description>
    <link>https://dev.to/vishalmx3</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1287021%2F7bff2fb6-0670-42e1-a107-2f4cf0ec676a.jpg</url>
      <title>DEV Community: vishal.codes</title>
      <link>https://dev.to/vishalmx3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vishalmx3"/>
    <language>en</language>
    <item>
      <title>Day 43/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Mon, 27 May 2024 07:32:53 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-43366-1jep</link>
      <guid>https://dev.to/vishalmx3/day-43366-1jep</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;calculate the largest subarray sum&lt;/li&gt;
&lt;li&gt;print the subarray with the largest sum&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JWT Authorization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;To &lt;strong&gt;calculate the largest subarray sum&lt;/strong&gt;, we use Kadane's Algorithm. We initialize two variables, &lt;code&gt;maxCurrent&lt;/code&gt; and &lt;code&gt;maxGlobal&lt;/code&gt;, with the first element of the array. We then iterate through the array starting from the second element. For each element, we update &lt;code&gt;maxCurrent&lt;/code&gt; to be the maximum of the current element and the sum of &lt;code&gt;maxCurrent&lt;/code&gt; and the current element. This step ensures that we are either starting a new subarray at the current element or continuing the existing subarray. We then update &lt;code&gt;maxGlobal&lt;/code&gt; to be the maximum of &lt;code&gt;maxGlobal&lt;/code&gt; and &lt;code&gt;maxCurrent&lt;/code&gt;. By the end of the iteration, &lt;code&gt;maxGlobal&lt;/code&gt; holds the largest sum of any subarray within the given array.&lt;/p&gt;

&lt;p&gt;To &lt;strong&gt;print the subarray with the largest sum&lt;/strong&gt;, we use a similar approach with Kadane's Algorithm, but with additional tracking of the start and end indices of the subarray. We initialize variables for the current and global maximums, and for the start and end indices. As we iterate through the array, we update &lt;code&gt;maxCurrent&lt;/code&gt; in the same way, but also track when we start a new subarray by recording the current index as the start. If &lt;code&gt;maxCurrent&lt;/code&gt; exceeds &lt;code&gt;maxGlobal&lt;/code&gt;, we update &lt;code&gt;maxGlobal&lt;/code&gt; and set the start and end indices to the current tracked start and current index, respectively. After completing the iteration, we print the subarray that starts at the recorded start index and ends at the recorded end index, which represents the subarray with the largest sum.&lt;/p&gt;

&lt;p&gt;#100daysofcode #1percentplusplus #coding #dsa&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>1percentplusplus</category>
    </item>
    <item>
      <title>Day 42/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Sun, 12 May 2024 20:32:15 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-42366-55gg</link>
      <guid>https://dev.to/vishalmx3/day-42366-55gg</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Print all subsequences/Power Set&lt;/li&gt;
&lt;li&gt;Generate all binary strings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use of postman for API testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;To print all subsequences or the power set of a given set, you'd typically use a recursive approach. Starting with an empty subsequence, you'd iterate through each element in the set. At each step, you have two choices: either include the current element in the subsequence or exclude it. You continue this process recursively, generating subsequences that include or exclude each subsequent element. The base case occurs when you've processed all elements, at which point you print or store the generated subsequence. By exploring all possible combinations, you effectively generate all subsequences or the power set of the original set.&lt;/p&gt;

&lt;p&gt;For generating all binary strings of length n, you can employ a similar recursive strategy. Starting with an empty string of length n, you'd explore each position in the string. At each position, you can either append '0' or '1'. You continue this process recursively until you've filled all n positions in the string. Once you've reached the base case (when all positions are filled), you print or store the generated binary string. By systematically exploring all possible combinations of '0' and '1' at each position, you generate all binary strings of length n.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;Using Postman for API testing simplifies the process by providing a user-friendly interface for sending requests to an API endpoint and analyzing the responses. Much like sending a request through a web browser, you can input the endpoint URL, select the HTTP method (such as GET, POST, PUT, DELETE, etc.), and include any required headers, parameters, or body content. Postman allows you to organize requests into collections, making it easy to manage and run tests for different APIs or endpoints. Additionally, you can set up and automate workflows by chaining requests together, defining variables, and writing tests to verify the correctness of the responses. Postman's features, including environment variables, pre-request scripts, and test scripts, streamline the testing process and facilitate collaboration among team members. Overall, Postman serves as a comprehensive tool for API testing, offering a range of functionalities to ensure the reliability and functionality of APIs.&lt;/p&gt;

&lt;p&gt;#100daysofcode #1percentplusplus #coding #dsa&lt;/p&gt;

</description>
      <category>1percentplusplus</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Day 41/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Sat, 11 May 2024 16:23:18 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-41366-1h8a</link>
      <guid>https://dev.to/vishalmx3/day-41366-1h8a</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check if an array represents a min-heap or not&lt;/li&gt;
&lt;li&gt;Convert min Heap to max Heap&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pymongo library&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;To check if an array represents a min-heap, iterate through each parent node starting from the last non-leaf node towards the root. At each step, compare the parent node with its children. If any child is smaller than the parent, it violates the min-heap property, indicating that the array doesn't represent a min-heap. If no violation is found, the array is a min-heap.&lt;/p&gt;

&lt;p&gt;To convert a min heap to a max heap, begin by swapping the positions of the parent node and its largest child if any child is greater than the parent. Then, recursively perform this swap operation for each subtree until the entire heap satisfies the max-heap property. This process effectively transforms the min heap into a max heap.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;The PyMongo library is a Python driver for MongoDB, enabling interaction with MongoDB databases from Python applications. It provides a simple and intuitive interface for performing various operations such as inserting, updating, querying, and deleting documents in MongoDB collections. With PyMongo, you can establish connections to MongoDB servers, access databases and collections, and execute commands and queries efficiently. Its design aligns with Python's philosophy, making it easy for developers to work with MongoDB databases seamlessly within their Python projects.&lt;/p&gt;

&lt;p&gt;#100daysofcode #1percentplusplus #coding #dsa&lt;/p&gt;

</description>
      <category>1percentplusplus</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Day 40/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Fri, 10 May 2024 15:07:41 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-40366-5h23</link>
      <guid>https://dev.to/vishalmx3/day-40366-5h23</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove outermost parenthesis&lt;/li&gt;
&lt;li&gt;Palindrome check&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asynchronous behaviour of NodeJS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;In the "Remove outermost parenthesis" code, we iterate through each character of the input string, keeping track of the count of open and close parentheses. We only add characters to the result string if they are not the outermost parentheses. The outermost parentheses are identified by the count of open and close parentheses being equal and the count being zero at the end. &lt;/p&gt;

&lt;p&gt;For the "Palindrome check" code, we compare characters from the beginning and end of the input string simultaneously, moving inward until we reach the middle. If at any point the characters don't match, we conclude that the string is not a palindrome. If all characters match, the string is a palindrome.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;In Node.js, asynchronous behavior allows tasks to be executed concurrently without waiting for previous tasks to complete. This is achieved using non-blocking I/O operations and event-driven architecture. When a task requiring I/O operation is encountered, Node.js delegates it to the system, and meanwhile, continues executing other tasks. Once the I/O operation is completed, a callback function is triggered to handle the result. This asynchronous model ensures efficient utilization of system resources and enables Node.js to handle large numbers of concurrent connections effectively.&lt;/p&gt;

&lt;p&gt;#100daysofcode #dsa #coding&lt;/p&gt;

</description>
      <category>1percentplusplus</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Day 39/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Thu, 09 May 2024 19:15:40 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-39366-325h</link>
      <guid>https://dev.to/vishalmx3/day-39366-325h</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find an element in a sorted array&lt;/li&gt;
&lt;li&gt;Find a peak element in an array&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JWT (JsonWebToken)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;To find the single element in a sorted array, you'd employ a binary search approach. You'd begin by examining the middle element and check if it's the single element. If it's not, you'd determine which half of the array to search based on whether the adjacent elements are equal or not. You continue this process until you find the single element, updating your search range accordingly.&lt;/p&gt;

&lt;p&gt;For finding a peak element in an array, you'd also utilize a binary search strategy. You'd check the middle element and examine its neighboring elements to determine if it's a peak. If it's not, you'd move towards the direction of the higher adjacent element, as the array must have at least one peak. This process continues until a peak element is found.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;JWT (JSON Web Token) authentication works by creating a token containing encoded information about the user, such as their identity and any relevant permissions. This token is signed with a secret key known only to the server. When a user logs in or performs an action that requires authentication, the server generates a JWT and sends it back to the client. The client then includes this token in subsequent requests, typically in the Authorization header. Upon receiving a request with a JWT, the server verifies the token's signature using the secret key. If the signature is valid, the server extracts the user information from the token and processes the request accordingly. This process allows for stateless authentication, as the server does not need to store user sessions.&lt;/p&gt;

&lt;p&gt;#100daysofcode #1percentplusplus #coding #dsa&lt;/p&gt;

</description>
      <category>1percentplusplus</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Day 38/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Wed, 08 May 2024 18:15:39 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-38366-138g</link>
      <guid>https://dev.to/vishalmx3/day-38366-138g</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Insert a node in DLL&lt;/li&gt;
&lt;li&gt;Delete a node in DLL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;To insert a node in a Doubly Linked List (DLL), you typically start by creating a new node with the provided data. Then, if the DLL is empty, you make the new node both the head and tail of the list. Otherwise, you update the pointers of the new node to point to the current head as its next node and NULL as its previous node. You then update the previous pointer of the current head to point to the new node. Finally, you set the new node as the new head of the list. This way, the new node is inserted at the beginning of the DLL, maintaining its connectivity.&lt;/p&gt;

&lt;p&gt;Deleting a node from a Doubly Linked List (DLL) involves several steps. First, you locate the node to be deleted by traversing the list until you find it. Once found, you adjust the pointers of the neighboring nodes to bypass the node to be deleted. Specifically, you make the previous node point to the next node of the node to be deleted, and you make the next node point to the previous node of the node to be deleted. Additionally, if the node to be deleted is the head or tail of the DLL, you update the head or tail pointers accordingly. Finally, you free the memory allocated to the node to be deleted. This process ensures the integrity of the DLL structure after the deletion operation.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;FastAPI is a web framework for building APIs with Python, designed for speed, simplicity, and type safety. It leverages Python's type hints for automatic data validation and documentation generation. When using FastAPI, you typically define API endpoints by creating functions decorated with specific route decorators, such as &lt;code&gt;@app.get()&lt;/code&gt; for GET requests or &lt;code&gt;@app.post()&lt;/code&gt; for POST requests. These functions typically receive parameters representing data from the request, process it as needed, and return data to be sent as the response. FastAPI automatically handles serialization and deserialization of data to and from JSON, making it straightforward to work with JSON-based APIs. Additionally, FastAPI provides built-in support for features like dependency injection, middleware, and automatic generation of interactive API documentation using Swagger UI or ReDoc. Overall, FastAPI simplifies the process of building high-performance APIs in Python while ensuring type safety and robust documentation.&lt;/p&gt;

&lt;p&gt;#100daysofcode #1percentplusplus #coding #dsa&lt;/p&gt;

</description>
      <category>1percentplusplus</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Day 37/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Tue, 07 May 2024 18:16:32 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-37366-120j</link>
      <guid>https://dev.to/vishalmx3/day-37366-120j</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Greedy algorithm to find minimum number of coins&lt;/li&gt;
&lt;li&gt;Valid Paranthesis Checker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Benefits of NodeJS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;The greedy algorithm for finding the minimum number of coins works by iteratively selecting the largest coin denomination that is less than or equal to the remaining amount needed to make change. It continues this process until the remaining amount becomes zero. At each step, it selects the largest possible coin denomination, ensuring the minimum number of coins is used to make the change.&lt;/p&gt;

&lt;p&gt;A valid parenthesis checker algorithm works by iterating through each character in the given string representing parentheses. It utilizes a stack data structure to keep track of the opening parentheses encountered. When an opening parenthesis is encountered, it is pushed onto the stack. When a closing parenthesis is encountered, it checks if the stack is empty or if the top of the stack contains the corresponding opening parenthesis. If either condition is not met, the parentheses are not valid. After processing all characters, if the stack is empty, the parentheses are valid; otherwise, they are not.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;Node.js offers several benefits for developers. Firstly, it allows for asynchronous, event-driven programming, which is particularly useful for handling I/O operations efficiently. This means Node.js can handle a large number of concurrent connections without blocking, making it ideal for building real-time applications like chat applications or streaming services. Secondly, Node.js utilizes JavaScript, a language familiar to many developers, both on the front end and the back end. This allows for code reuse and easier collaboration between front-end and back-end teams. Additionally, Node.js has a vast ecosystem of libraries and packages available through npm (Node Package Manager), which speeds up development by providing ready-to-use solutions for common tasks. Finally, Node.js is lightweight and scalable, making it suitable for building microservices architectures and deploying applications to cloud platforms. Overall, Node.js offers flexibility, performance, and a thriving community, making it a popular choice for building modern web applications.&lt;/p&gt;

&lt;p&gt;#100daysofcode #1percentplusplus #coding #dsa&lt;/p&gt;

</description>
      <category>1percentplusplus</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Day 36/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Mon, 06 May 2024 18:33:11 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-36366-ch5</link>
      <guid>https://dev.to/vishalmx3/day-36366-ch5</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;p&gt;Implement queue using stack&lt;/p&gt;

&lt;p&gt;Reverse a queue using recursion&lt;/p&gt;

&lt;p&gt;🌟 Dev- &lt;br&gt;
Tailwind css library&lt;/p&gt;

&lt;p&gt;Some Key highlights:&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;To implement a queue using a stack, you can utilize two stacks. One stack will be used for enqueue operations, while the other will handle dequeue operations. For enqueue, simply push elements onto the first stack. When dequeuing, if the second stack is empty, transfer all elements from the first stack to the second. Then, pop from the second stack. This way, the oldest element in the queue will always be at the top of the second stack for dequeue operations.&lt;br&gt;
To reverse a queue using recursion, you can recursively dequeue each element from the original queue until it's empty, storing each element. Then, recursively enqueue these elements back into the queue. This process effectively reverses the order of elements in the queue using recursion, maintaining its FIFO (First In, First Out) property.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;Tailwind CSS is a utility-first CSS framework that streamlines web development by providing a comprehensive set of pre-designed utility classes. Instead of creating custom CSS rules for individual elements, Tailwind encourages developers to apply these utility classes directly in HTML markup. This approach promotes consistency and rapid prototyping by abstracting common styling patterns into reusable classes. With Tailwind, you can quickly style elements by applying classes like &lt;code&gt;bg-blue-500&lt;/code&gt; for background color, &lt;code&gt;text-lg&lt;/code&gt; for text size, or &lt;code&gt;p-4&lt;/code&gt; for padding. This methodology facilitates responsive design, as classes can be easily modified with breakpoints (e.g., &lt;code&gt;md:bg-red-500&lt;/code&gt; for medium-sized screens). Overall, Tailwind CSS simplifies the styling process, allowing developers to focus on building robust and visually appealing user interfaces efficiently.&lt;/p&gt;

&lt;p&gt;#100daysofcode&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>1percentplusplus</category>
    </item>
    <item>
      <title>Day 35/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Sun, 05 May 2024 15:49:46 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-35366-1e07</link>
      <guid>https://dev.to/vishalmx3/day-35366-1e07</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Longest increasing subsequence&lt;/li&gt;
&lt;li&gt;Selecting stock&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Styled components library &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;To find the longest increasing subsequence, the algorithm iterates through each element in the sequence, keeping track of the length of the longest increasing subsequence ending at that element. It does this by comparing the current element with all previous elements, updating the length if the current element is greater and has a longer subsequence. The overall longest increasing subsequence length is the maximum of these lengths across all elements.&lt;/p&gt;

&lt;p&gt;For selecting stocks, the algorithm analyzes each stock's price and its potential for profit. It iterates through the prices, keeping track of the minimum price seen so far and the maximum profit that can be made by buying at that minimum price and selling at the current price. It updates these values as it progresses through the prices, ultimately returning the maximum profit possible.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;Styled Components is a library for styling React components with JavaScript and CSS. It allows developers to write CSS in JavaScript files using tagged template literals. This approach enables scoped styles, where styles are encapsulated within the component, preventing them from affecting other components. Styled Components simplifies the process of creating reusable and maintainable UI components by allowing developers to define styles directly within their component code. Additionally, it supports dynamic styling based on props and theming, making it a powerful tool for building responsive and customizable user interfaces in React applications.&lt;/p&gt;

&lt;p&gt;#100daysofcode&lt;/p&gt;

</description>
      <category>1percentplusplus</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Day 34/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Sat, 04 May 2024 18:20:42 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-34366-2jj2</link>
      <guid>https://dev.to/vishalmx3/day-34366-2jj2</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is Perfect square&lt;/li&gt;
&lt;li&gt;Search in a rotated array&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redux for state management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;To determine if a given number is a perfect square, the algorithm iteratively narrows down the search range by dividing the number by 2 and checking if the square of the midpoint is equal to the target number. This process continues until the search range is sufficiently small or until the square of the midpoint matches the target number. If a match is found, the algorithm returns true; otherwise, it returns false, indicating that the number is not a perfect square.&lt;/p&gt;

&lt;p&gt;For searching in a rotated sorted array, the algorithm follows a binary search approach. It first identifies the pivot point where the array was rotated, dividing the array into two sorted halves. Then, it applies binary search separately on each half, adjusting the search range based on whether the target value falls within the sorted range of the current half. This process continues until the target value is found or until the search range becomes empty, indicating that the target value is not present in the array.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;Redux is a predictable state container for JavaScript apps, commonly used with React. It provides a centralized store to manage the state of an application and facilitates predictable state mutations through actions. The Redux pattern involves defining actions to describe state changes, reducers to specify how those actions modify the state, and a store to hold the application state. When an action is dispatched, it flows through the reducers, which update the state accordingly. Components can subscribe to the store to receive updates when the state changes, ensuring a single source of truth for the application's data and enabling efficient management of complex state logic.&lt;/p&gt;

&lt;p&gt;#100daysofcode #1percentplusplus #coding #dsa&lt;/p&gt;

</description>
      <category>1percentplusplus</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Day 33/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Fri, 03 May 2024 15:38:43 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-32366-47i5</link>
      <guid>https://dev.to/vishalmx3/day-32366-47i5</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Today's Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reverse words in a given string&lt;/li&gt;
&lt;li&gt;Longest common prefix&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSR vs CSR&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;To reverse words in a given string, start by splitting the string into words. Then, iterate through the words in reverse order and append them to form the reversed string, ensuring to add spaces between words. Finally, return the reversed string. This process effectively flips the order of words while maintaining their individual characters' order within each word.&lt;/p&gt;

&lt;p&gt;For finding the longest common prefix among an array of strings, first, set the prefix as the first string in the array. Then, iterate through the remaining strings and compare each character of the prefix with the corresponding character of the current string. If there's a mismatch or if the prefix length exceeds the length of the current string, trim the prefix accordingly. Repeat this process until the prefix is the longest common prefix among all strings in the array, then return the prefix.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;Server-Side Rendering (SSR) involves rendering the web page on the server and sending a fully rendered page to the client. When a user requests a page, the server processes the request by executing the JavaScript code and generating the HTML content to be sent back to the browser. This approach provides faster initial load times and better SEO because search engine crawlers can easily parse the HTML content.&lt;/p&gt;

&lt;p&gt;Client-Side Rendering (CSR), on the other hand, involves sending a minimal HTML document to the client, which includes links to JavaScript and CSS files. The browser then downloads these files and executes the JavaScript code to render the page dynamically. This approach provides a smoother and more interactive user experience, as the page can update without full page reloads. However, initial load times may be slower, and SEO can be more challenging since search engine crawlers may not execute JavaScript.&lt;/p&gt;

&lt;p&gt;#100daysofcode #1percentplusplus #coding #dsa&lt;/p&gt;

</description>
      <category>1percentplusplus</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Day 32/366</title>
      <dc:creator>vishal.codes</dc:creator>
      <pubDate>Thu, 02 May 2024 17:34:43 +0000</pubDate>
      <link>https://dev.to/vishalmx3/day-32366-3flp</link>
      <guid>https://dev.to/vishalmx3/day-32366-3flp</guid>
      <description>&lt;p&gt;🚀 Today's Learning:&lt;br&gt;
🌟 DSA&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check whether two Strings are anagram of each other&lt;/li&gt;
&lt;li&gt;Print all anagrams together&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌟 Dev&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redux Persist&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔍 &lt;strong&gt;Some Key Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DSA&lt;/p&gt;

&lt;p&gt;To check whether two strings are anagrams of each other, iterate through each character of both strings, counting the frequency of each character in each string using a hashmap. Then, compare the frequency maps of both strings. If the maps are identical, the strings are anagrams; otherwise, they are not.&lt;/p&gt;

&lt;p&gt;To print all anagrams together, create a hashmap where the keys are sorted versions of each word in the input list, and the values are lists of words that are anagrams of each other. Iterate through the input list of words, sorting each word and using the sorted word as a key to group anagrams together in the hashmap. Finally, iterate through the hashmap and print each list of anagrams together.&lt;/p&gt;

&lt;p&gt;DEV&lt;/p&gt;

&lt;p&gt;Redux Persist is a library used in Redux-based applications to persist the Redux state to storage, typically AsyncStorage in React Native or localStorage in web applications. It allows the state to be saved across browser or app restarts, ensuring a seamless user experience. Redux Persist works by integrating with the Redux store and providing middleware that automatically saves the state to storage whenever it changes. Upon app or browser restart, the persisted state is retrieved from storage and rehydrated into the Redux store, allowing the application to resume from where it left off. This library simplifies the process of implementing persistence in Redux applications, enhancing reliability and user satisfaction.&lt;/p&gt;

&lt;p&gt;#100daysofcode #1percentplusplus #coding #dsa&lt;/p&gt;

</description>
      <category>1percentplusplus</category>
      <category>100daysofcode</category>
    </item>
  </channel>
</rss>
